計算質因子只有2,3,5,7的數的因子有幾個

2021-08-19 23:29:46 字數 800 閱讀 5465

題目

乙個只有2、3、5或7的質數的數被稱為乙個不起眼的數。

第1、2、3、4、5、6、7、8、9、10、12、14、15、16、18、20、21、24、25、27、……

顯示前20個不起眼的數字。

現在給出乙個簡單的數字,請編寫乙個程式來計算這個簡單數字的因數個數。

例如,4是乙個不起眼的,它有3個因數(1,2,4);12有6個因數。

我的想法:分別算出來乙個數是2,3,5,7的幾次方,再將次數相乘,然後發現結果不對,好像只有乙個質因子的時候這麼幹不行,因為只有乙個你沒法和人家匹配啊,於是我就把只有乙個質因子的情況單獨討論,結果還是不對,好像還落了這個數本身(不和其他數匹配的情況)於是又把每個質因子的次數再加在一起,最後再加一(本身1就是乙個因子),結果都對,可是還是wa........,真煩人。

實際答案還是先算出來

乙個數是2,3,5,7的幾次方,但要將他們的次數分別加一再相乘(即把0次方也算在裡面),這樣就可以避免只有乙個質因子時要單獨算的情況,也不用最後再加一了。

主要**如下

while (scanf("%i64d", &n), n)

;int ans[4] = ;//由在算的時候沒有把0個2,0個3,0個5或者0個7的情況計算進去,所以一開始就加上

for (int i = 0; i < n; i++)

}printf("%d\n", ans[0] * ans[1] * ans[2] * ans[3]);

}

醜數(因子只有 2 3 5 的數)

理解題意關鍵 如果說乙個數的因子只有 2 3 5 那麼反過來想,這個數一定是由若干個 2 3 5 相乘得到的,所以每一次只需要找出當前所有已知醜數中由2 3 5 相乘可以得到的最小的數即可。也就是說每乙個醜數,都可以由之前的醜數乘 2 3 5 得到。具體做法 設定三個指標,初始他們都指向第乙個醜數 ...

質因子的分解

1 所謂的質因子分解是指將乙個正整數n寫成乙個或多個質數的乘積的形式,例如 6 2 3,8 2 2 2.或者將其寫為指數形式,如 6 2 1 3 1,180 2 2 3 2 5 1 由於最後要歸結到若干不同指數的乘積,因此需要先將素數表列印出來。注意 1本身不是素數,因此他沒有質因子,一般就是討論大...

正整數的因子與質因子

給定乙個正整數,求其所有因子與質因子。所給正整數不超過long型別的最大表示範圍。1,60,2,30,3,20,4,15,5,12,6,10 2,3,5 理論 首先明確幾個數學概念和結論 1.乙個數的自身和1都是其因子 2.乙個數的因子總是成對出現num m n 3.如果m不等於n,則m和n必定分別...