素因子分解的演算法有很多,費馬因子分解:比試除法更加高效,是計算機中廣泛使用的很多更有效的因子分解演算法的基礎。二次篩法和數域篩法用於數百位的十進位制的大數字。而數字越大數域篩法更好。現在暫時僅僅寫了最基礎的試除法,更好的演算法還等著我去學習~~
#include #includeusing namespace std;
const int n=5e6; //有些特殊的數字素因子會特別大,這裡篩選出來的素數對某些特殊的大數不能處理
int pri[n],cnt; //50000內的素數共有5133個
bool number[n+1];
void getprime()}}
int main()
printf("%d=",n);
int pow;
bool p=0;
for(i=1;i<=cnt;i++)
while(n%pri[i]==0)
if(p)printf("^%d",pow);
if(n==1)
if(pow)printf("*");}}
return 0;
}
最大素因子 篩法
描述 greyants最近正在學習數論中的素數,但是現在他遇到了乙個難題 給定乙個整數n,要求我們求出n的最大素因子的序數,例如 2的序數是1,3的序數是2,5的序數是3,以此類推.研究數論是需要很大的耐心的,為了懲罰那些沒有耐心讀完題目的童鞋,我們規定 1的最大素因子序數是0.輸入有多組測試資料,...
NYOJ 520 最大素因子 快速線性篩法的變形
時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 greyants最近正在學習數論中的素數,但是現在他遇到了乙個難題 給定乙個整數n,要求我們求出n的最大素因子的序數,例如 2的序數是1,3的序數是2,5的序數是3,以此類推.研究數論是需要很大的耐心的,為了懲罰那些沒有耐心讀完...
數論 素數篩選法與整數的素因子分解
篩選法 求出n以內的素數,最快的應該是篩選法。篩選法的思路是 要求10000以內的素數,把1 10000都列出來,1不是素數,劃掉 2是素數,所有2的倍數都不是素數,劃掉 取出下乙個倖存的數,劃掉它的所有倍數 直到所有素數找完為止。這種做法的空間複雜度是o n 時間複雜度o n logn const...