题解 | #筛选法求素数#
筛选法求素数
https://www.nowcoder.com/practice/06c3dcc303654ef4926654023eca1e5a
#include <stdio.h>
int main() {
int a = 0;
while(~scanf("%d", &a))
{
int i = 0;
int arr[100]={0};
int count = 0;
for(i=2; i<=a; i++)
{
arr[i-2]=i;//存储
}
for(i=0; i<=a-2; i++)
{
int j = 0;
for(j=1; j<=a-2-i; j++)
{
if(arr[i+j]%(i+2)==0 && arr[i+j]!=0)//控制数组中该元素之后的数能被该数整除,能够被整除的数清0后,不能影响到其他数的判断
{
arr[i+j]=0;
count++;
}
}
}
for(i=0; i<a-1; i++)
{
if(arr[i]!=0)//将没被清零的数输出来
printf("%d ",arr[i]);
}
printf("\n%d\n",count);
}
return 0;
}
查看7道真题和解析