题解 | #筛选法求素数#

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

    int arr[100]={0};
    int n;
    while(~scanf("%d",&n)){
        int i=0;
        for(i=0;i<n-1;i++){  //数组中存储了n-1个元素
            arr[i]=2+i;      //给数组arr中的元素赋初值2~n
        }
        int x=0;       //表示当前的除数的下标
        for(x=0;x<n-1;x++){
            for(i=x+1;i<n-1;i++){
                if(arr[i]==0||arr[x]==0)          //由于除数不能为0,故跳过
                    continue;
                if(arr[i]%arr[x]==0)     //arr[i]能被arr[x]整除
                    arr[i]=0;
            }
        }
        int count=0;
        for(i=0;i<n-1;i++){
            if(arr[i]!=0)
                printf("%d ",arr[i]);
            else
                count++;
        }
        printf("\n%d\n",count);
    }
    return 0;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务