题解 | #筛选法求素数#

筛选法求素数

http://www.nowcoder.com/practice/06c3dcc303654ef4926654023eca1e5a

#include<stdio.h>
int main(void)
{
    int n;
    while((scanf("%d",&n))!=EOF)
    {
        int *a=(int *)malloc(sizeof(int)*(n-1));//动态申请内存数组空间
        int count=0;
        for(int i=0;i<n-1;i++)//为数组赋值
            a[i]=i+2;
        for(int i=2;i<n-1;i++)//求素数,从第3个数组元素开始
        {
            for(int j=2;j<=a[i]/2;j++)//检测一个数能否被2-此数的一半整除,如果能则是非素数
                if(a[i]%j==0)//做好标记并计数
                {
                    a[i]=0;
                    count++;
                }
        }
        for(int i=0;i<n-1;i++)
            if(a[i]!=0)
            printf("%d ",a[i]);
        printf("\n%d",count);
    }
    return 0;
}
全部评论

相关推荐

2024-12-23 11:36
中南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务