题解 | #筛选法求素数#
筛选法求素数
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;
}

