乙個數的約數的個數 質因數分解

2022-05-09 20:39:06 字數 1061 閱讀 2187

problem description

乙個數,如果他的素數因子只包括2,3,5,7,則稱這個數為萌數,比如,下面這些數就是前20個萌數:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27。

現在給你乙個萌數,請程式設計計算它的約數的個數。

比如,4是乙個萌數,他有3個約數(1,2,4);12也是乙個萌數,他有 6 個約數(1,2,3,4,6,12)。

input

輸入包含多組測試用例。

每個測試用例包含乙個萌數n, 並且n在64位整數的範圍( long long 型別,輸入輸出用%lld )。

如果n為0,則標誌結束輸入,不做處理。

output

對於每個測試用例中的萌數,請輸出他的約數的個數。

每個輸出佔一行。

sample input412

0sample output36

拿上面的樣例說明一下,其他情況也是這樣算的

4=2×2= 222

2那麼4的約數只能為2a2

a(a的範圍是0~2),

因此4的約數有3個;

12=2×2×3=22+

3122

+31那麼12的約數只能為2a∗

3b2a

∗3b(a的範圍(0-2),b的範圍(0-1)),因此12的約數有3*2=6個。

即乙個數的約數的個數=分解質因數的各指數之積

具體**如下

#include

typedef

long

long ll;

using

namespace std;

ll n;

intmain()

while

(n%3==0

)while

(n%5==0

)while

(n%7==0

) ll ans=a1*a2*a3*a4;

cout<}return0;

}

質因數分解的坑點

題目重述 已知正整數n nn是兩個不同的質數的乘積,試求出兩者中較大的那個質數。其中n 2 109 n 2 10 9 n 2 10 9當然我的思路就真的非常直接了,迴圈兩個乘數,滿足乘積正確,並且判斷兩數為質數,如下 include using namespace std bool isprime ...

求乙個數約數的個數

求約數的個數 計算乙個整數的約數個數 輸入格式 輸入乙個整數 輸出格式 輸出一行,為輸入整數的約數的個數 樣例輸入 10 樣例輸出 4ac import math number int raw input count 0 sqrt float math.sqrt number if number s...

將乙個正整數分解質因數

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