湘潭大學OJ1089質因數分解

2021-10-07 01:20:06 字數 932 閱讀 5070

description 任意乙個正整數可以分解成唯一的質因數的乘積,給出正整數,請計算出它的質因數分解式。

輸入每行乙個正整數2<=n<=10^8。

輸出每行輸出乙個對應結果。使用」^」表示冪,」*」表示乘,質因子應該按從小到大的順序輸出,如果某乙個質因子只有一次,那麼就不要輸出它的冪。

sample input26

36sample output

22*3

2^2*3^2

思路很簡單,從i=2到 i*i<=n迴圈,當遇到乙個n%i=0的情況,就算是找到了乙個質因數。注意最後n不是0的情況。比如說 求6得質因子個數,當i*i<=6時結束迴圈,此時i一定是小於3的,按照我們的分析 6應該包含2個質因子(2和3),所以當迴圈完畢時,要判斷一下 n此時的值,若為1 說明已經把質因數找完,若不為1,那麼剩下的一定是個質數。

這個題還要注意輸出的問題,使用」^」表示冪,」*」表示乘。具體請看**。

我使用an這個變數在儲存找到的不同質因數的個數,很顯然,第乙個質因數前面是不用輸出「 * 」的,用count這個變數儲存每個質因數的個數,用來表示冪。

#include

using

namespace std;

intmain()

if(an!=0)

printf

("*");

if(count!=1)

printf

("%d^%d"

,i,count)

;else

if(count==1)

printf

("%d"

,i);

an++;}

}if(an==0)

printf

("%d\n"

,n);

else

}return0;

}

質因數分解

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

質因數分解

短除法 求乙個數分解質因數,要從最小的質數除起,一直除到結果為質數為止。分解質因數的算式的叫短除法 和除法的性質差不多,還可以用來求多個個數的公因式 求 最大公因數的一種方法,也可用來求 最小公倍數。求幾個數最大公因數 的方法,開始時用觀察比較的方法,即 先把每個數的因數找出來,然後再找出公因數,最...

質因數分解

講乙個數分解為幾個質數相乘的結果 int a maxn 用來存質因數 int b maxn 用來存質因數的個數 int main if n 1 不能忘記這一步操作 輸出 第1種寫法 a a a b b b b c c printf 第一種寫法 for int i 1 i tot i else pri...