給定乙個整數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...