/************************************************************************/ |读 初等数论及其应用时想到的一种题目,不过目前还从未做过类似的题 |就是求出大数阶乘的素因子分解(算术基本定理). 思路:先涮素数,大数n范围内的素数全部找到 |然后找出1-n之间的最大素因子记为max_prime, 然后逐步枚举1-n每个数的质因子即可 /************************************************************************/ #include<iostream> #include<cmath> #include<fstream> using namespace std; const int maxn = 10001; bool isprime[maxn]; int prime[maxn/3]; int power[maxn]; //涮素数1-n int getprime(int n) { int i, j, k = 0; int s, e = (int)sqrt(n*1.0) + 1; memset(isprime, true, sizeof(isprime)); isprime[0] = isprime[1] = false; prime[k++] = 2; for(i=4; i<n; i+=2) isprime[i] = false; for(i=3; i<n; i+=2) { if(isprime[i]) { prime[k++] = i; for(s=i*2, j=i*i; j<n; j+=s) { isprime[j] = false; } } } for(; i<n;