埃氏筛选
结果
代码
#include <stdio.h>
int prime[100000000], pNum = 0; // prime存放素数,pNum为素数个数
int p[100000000] = {0}; // 标记,素数false,合数true
int SmallPrimeList(int n,int *plist, int *len)
{
for (int i = 2; i <= n; i++)
{
if (p[i] == 0) // 如果i是素数
{
prime[pNum++] = i; // 记录i
for (int j = i + i; j <= n; j += i) // 筛去所有i的倍数
p[j] = 1;
}
}
return 1;
}
int main(){
int n;
printf("shu ru fan wei\n");
scanf("%d",&n);
SmallPrimeLis(n,prime,&pNum);
for(int i = 0;i <pNum;i++){
printf("%d ",prime[i]);
}
}