题解 | #筛选法求素数#

筛选法求素数

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

#include <stdio.h>
int main()
{
  int n, i, j;
  int arr[100] = {0};  //设初始数组元素为100个0
  scanf("%d", &n);    
  for(i=2; i<=n; i++)   //数组元素为从2到n
      arr[i] = i;     //为了方便,设数组下标和数组元素一样,从2到n
    for(j=2; j<=n; j++)   //外循环为2到n,即被2到n的数整除
    {
      for(i=j+1; i<=n; i++)   //内循环为遍历数组进行比较,每趟循环的数组下标从j+1开始
      { 
        if(arr[i] % j == 0)    //若能被j(从2到n)整除
           arr[i] = 0;          //还原为0
       }
     }
    for(i=2,j=0; i<=n; i++)    //遍历数组,
    {
       if(arr[i] != 0)
           printf("%d ", arr[i]);   //未被清0的数打印出来
       else 
           j++;   //清0的数,计数+1
    }
      printf("\n");   //换行
      printf("%d", j);   //打印被清0的数的个数
  return 0;
}

全部评论

相关推荐

09-21 21:14
门头沟学院
否极泰来来来来:和他说:这里不好骂你,我们加个微信聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务