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