NYOJ 187 快速查找素数

2014-11-24 09:05:34 · 作者: · 浏览: 0

原题链接

打表。

附ac代码:

#include 
  
   
#include 
   
     #define MAX 2000000 + 2 int a[MAX] = {1, 1}; void count(){ int t = sqrt(MAX); for(int i = 2; i <= t; ++i){ if(a[i]) continue; for(int j = i * i; j <= MAX; j += i) a[j] = 1; } } int main(){ count(); int n, i; while(scanf("%d", &n), n){ for(i = 2; i <= n; ++i) if(!a[i]) printf("%d ", i); printf("\n"); } return 0; }