题解 | #筛选法求素数#
筛选法求素数
https://www.nowcoder.com/practice/06c3dcc303654ef4926654023eca1e5a
#include <stdio.h>
/*利用筛选法求素数个数*/
int main()
{
//定义数据范围
int n = 0;
//多组输入
while (scanf("%d", &n) == 1)
{
//创建数组,存放2~n之间的数字
int arr[101] = { 0 };
int i = 0;
for (i = 2; i < n + 1; i++)
{
arr[i - 2] = i;
}
//循环清0
int j = 0;
for (j = 2; j < n + 1; j++)//要被除的数字
{
for (i = j-1; i < n - 1; i++)
{
if (arr[i] % j == 0)
{
//能被j整除,就赋值为0
arr[i] = 0;
}
}
}
//判断不为0的数,并打印输出和计算个数
int count = 0;//存放不为0的数字的个数
for (i = 0; i < n - 1; i++)
{
if (arr[i] != 0)
{
printf("%d ", arr[i]);
count++;
}
}
printf("\n%d", n - 1 - count);
}
return 0;
}

