一、构造质数表 (1)试除法 源代码: #include<cstdio> int n,s(1),i[1001]; int main() { scanf("%d",&n); i[1]=2; printf("2 "); for (int a=3;s<n;a++) { bool t(0); for (int b=1;b<=s;b++) if (!(a%i[b])) t=true; if (!t) { s++; i[s]=a; printf("%d ",a); } } //利用曾经的素数,对现在的数进行检验,更为迅速地构造质数表。 return 0; } (2)筛法 源代码: #include<cstdio> int n,s(0); bool f[100001]={0}; int main() { scanf("%d",&n); for (int a=2;s<n;a++) if (!f[a]) { printf("%d ",a); for (int b=2;b<=100;b++) //此循环变量以及数组的范围,还应以实际而定。 f[b*a]=true; s++; } return 0; } 二、Pollard Rho算法 源代码: #include<cstdio> int n; void x1(int t,int k) { if (t==k) printf("%d",k); else if (!(t%k)) { printf("%d*",k); x1(t/k,k); } else x1(t,k+1); } //利用奇妙的规则,进行递归。 int main() { scanf("%d",&n); x1(n,2); return 0; }