埃式筛选法求素数


#include <stdio.h> #include <stdlib.h> #define max 10000000 #define bool char //定以bool类型 #define true 1 #define false 0 //规定1为对0为错(c语言中没有bool函数) int prime[max]; bool is_prime[max]; int sieve(int n) { int p=0; for(int i=0;i<=n;i++) { is_prime[i]=1; } is_prime[0]=is_prime[1]=0; //1和0不是素数 for(int i=2;i<=n;i++) { if(is_prime[i]==1) //是素数的时候 { prime[p++]=i; //p统计素数个数 for(int j=2*i;j<=n;j+=i) { is_prime[j]=0; //是素数倍数数不是素数 } } } return p; } int main() { int n; scanf("%d",&n); printf("%d",sieve(n)); return 0; }
原文地址:https://www.cnblogs.com/Fy1999/p/8117076.html