题解 | #筛选法求素数#

筛选法求素数

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

#include<stdio.h>
int main()
{
    int b,a[1000]={0},m,count=0;    //定义一个全为0的数组,后面输出就不考虑数组的个数,因为只输出不为0的。
    scanf("%d",&b);
    for(int i=2;i<=b;i++)
    {
        for(int j=i-2;j<i-1;j++)  //使2至n的数分别读入数组a的第0位,第1位,第二位.......
        {
            a[j]=i;
        }
    }
    for(int i=0;i<b-1;i++)
    {
        if(a[i])                     //因为a[j]可能为0,a[j]只是a[i]的后一位数,所以需要a[i]不为0。
        {
            for(int j=i+1;j<b-1;j++)    
            {
                if(a[j]%a[i]==0)      
                {
                    a[j]=0;           
                }
            }
        }
    }
    for(int i=0;i<b-1;i++)      //不考虑i最大取多少,但必须把所有的数全扫描一遍。因为初始定义的a全为0,但只输出不为0的数。
    {
        if(a[i])                        
        {
            printf("%d ",a[i]);
            count++;
        }
            
    }
    printf("\n%d",b-1-count);
    return 0;
}
全部评论

相关推荐

11-29 11:21
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务