萌數 質因數分解

2021-10-14 05:22:24 字數 1277 閱讀 5176

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 input:

4

120

sample output:

3

6

題目大意

素數因子只有2、3、5、7的數稱為萌數,輸入乙個萌數,求這個萌數的約數的個數。

解題思路

所有自然數都可以分解為若干個質數的乘積,而萌數的質因數只有2、3、5、7四種,乙個數的約數的個數=分解質因數的各指數之積,12 = 2 x 2 x 3 = 22 x 31 , 2的指數有0、1、2三種可能,1的指數有0、1兩種可能,因此12的約數個數等於3 x 2 = 6種。

ac**

#include

using

namespace std;

typedef

long

long ll;

intmain

(int argc,

char

**ar**)

while

(n%3==0

)while

(n%5==0

)while

(n%7==0

) ll ans=a*b*c*d;

printf

("%lld\n"

,ans);}

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