求质数——埃拉托色筛选法
#include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]) { int i = 2, j = 0; long N = atol(argv[1]); int *a = malloc(N*sizeof(int)); if (NULL == a) { printf("There is no enough memory!\n"); return -1; } for(i=2; i<N; i++) a[i] = 1; for(i=2; i<N; i++) { if(a[i]) { for(j=i; j*i<N; j++) { a[i*j] = 0; } } } for(i=2; i<N; i++) { if(a[i]) printf("%4d ", i); } printf("\n"); return 0; }
版权声明:
作者:朝雾之归乡
出处:http://www.cnblogs.com/cnpirate
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。