/以下是产生素数表的关键代码#include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> //prime[i] //if prime[i] = 1 then i is prime number; //otherwise i isn't prime number! char* solve(int n) { int i, j; char *prime = NULL; prime = (char*)malloc(sizeof(char) * ( n + 1)); for(i = 0; i < n; ++i) prime[i] = 1; prime[0] = 0; prime[1] = 0; for(i = 2; i <= sqrt(n); ++i) { if(prime[i]) { for(j = 2 * i; j <= n; j += i) prime[j] = 0; } } return prime; } void print(char *a, int n) { int i; for(i = 0; i <= n; ++i) { if(a[i]) { printf("%d\t", i); } } printf("\n"); } int main() { int n; while(scanf("%d", &n) && n >=2) { time_t t1 = clock(); char *prime = solve(n); time_t t2 = clock(); print(prime, n); printf("time:%f\n", (t2 - t1) * 1.0 / CLOCKS_PER_SEC); free(prime); } return 0; }
for(i = 0; i < n; ++i) prime[i] = 1; prime[0] = 0; prime[1] = 0; for(i = 2; i <= sqrt(n); ++i) { if(prime[i]) { for(j = 2 * i; j <= n; j += i) prime[j] = 0; } }
筛选法产生素数表
最新推荐文章于 2021-12-30 16:54:21 发布