PAT 1059 分解質因數和素數表的獲取

2021-10-04 20:27:32 字數 966 閱讀 1999

給定乙個整數n, 要求分解質因數,將n分解為各個素數的乘積

sample input:

97532468
sample output:

97532468=2^2*11*17*101*1291
分解為各個素數的乘積,如果從1 ~ n開始一步一步判斷的話,時間複雜度太高了,選擇空間換時間,我們先獲取整個素數表

獲取素數表的方法在前面有,注意素數表的大小至少開到 n + 1,因為n有可能天生就是素數

可以建立結構體factor,包含素數值和素數的個數,然後建立乙個結構體陣列

結構體陣列的大小開到10就可以了,因為前十個素數的乘積已經超過了整型數的大小,所以乙個整型數絕不可能由十個以上的素數乘積獲得

素數表獲取後,可以直接從素數表開始遍歷,注意判斷條件為 i < sqrt(n),因為大部分數的最大素數是不會超過sqrt(n)的,但如果最後 n != 1,證明有乙個大於 sqrt(n)的素數,有且只有乙個

#include

#include

int n;

const

int maxn =

100010

;int prime[maxn]

;int pnum =0;

bool

isprime

(int n)

return

true;}

void

find_prime()

}}struct factor fac[10]

;int

main()

num++;}

if(n ==1)

break;}

if(n !=1)

for(

int i =

0; i < num; i++)}

}return0;

}

014 分解質因數

題目 將乙個正整數分解質因數。例如 輸入90,列印出90 2 3 3 5。程式分析 對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完成 1 如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。2 如果n k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新的正整...

1020 分解質因數

每乙個大於等於2的自然數,均可寫成乙個或多個質數的乘積,例如 2 2 20 2 2 5這種將乙個整數分割成若干個質數之積的操作叫做分解質因數。現在,給你乙個整數n,請你編寫乙個程式,對其分解質因數。輸入為一行,正整數n,保證1 n 2147483647 1輸出n的質因數分解形式,格式為 n p1 e...

程式4 分解質因數

分解質因數就是將乙個合數分解成幾個質數 也叫素數 的乘積的形式。如 6 2 3 基本思路 從i 2到sqrt n 遍歷,如果n i 0,則表示i是n的乙個因子,然後再看這個i是不是素數 即質數 如果是,則列印,並使n n i。然後i再從2開始。bool isprime int m return tr...