快速線性篩素數
阿新 • • 發佈:2018-12-09
#include<stdio.h> #include<string.h> const int maxn = 1e7+7; bool isprime[maxn]; int prime[maxn]; int main() { int n; scanf("%d",&n); int cnt = 0; memset(isprime,true,sizeof(isprime)); for(int i = 2; i <= n; i++) { if(isprime[i]) prime[cnt++] = i; for(int j = 0; j < cnt && i*prime[j] <= n; j++) { isprime[i*prime[j]] = false; if(i%prime[j] == 0) break; } } int ans = 0; for(int i = 2;i <= n;i++) if(isprime[i]) ans++; printf("%d\n",ans); return 0; }