素因子分解 (快速篩法 試除法)

2021-07-03 07:29:09 字數 580 閱讀 9091

素因子分解的演算法有很多,費馬因子分解:比試除法更加高效,是計算機中廣泛使用的很多更有效的因子分解演算法的基礎。二次篩法和數域篩法用於數百位的十進位制的大數字。而數字越大數域篩法更好。現在暫時僅僅寫了最基礎的試除法,更好的演算法還等著我去學習~~

#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...