質因數個的倒數的數累加

2021-08-10 19:12:59 字數 927 閱讀 5701

問題:

定義n(x)是x的質因數個數,f(x) = [1/n(x)],[x]表示向下取整。

輸入x  ,請輸出答案 ∑ni

=1f(x)。

1<=x<=10^6.

分析:

一般列舉肯定是要超時的,

打表解決。上答案!(有點難想)

f(x)=[1/n(x)]的取值,只能是 0  或  1 ! 因為向下取整。當質因數個數大於1 時,倒數就小於1了!!一向下取整就是0!!!!

思考:

每個數(1除外)都至少有乙個質因數!

如上文所說,質因數個數大於1的數,,就 把它的個數看作0!!

所以只需要考慮哪些數的質因數只有乙個!!(解題的關鍵,個人覺得也是難點!!!)

1、質數的質因數一定是1個。

2、質數的平方的質因數一定是1個。

3(總結)、不止是平方,,質數的n次方的質因數一定只有他本身!!!!

仔細想想,質因數只有乙個的數沒有其他的情況了。 

因為每個數(1除外)都至少有乙個質因數!而只有質數的質因數是它本身!!

所以 ,假設不是這種情況,那麼他的其中乙個約數因數一定可以再分解成另乙個質數!!!!

下面的是打表了。。

#include const int maxn = (int)1e6 + 5;

int p[maxn], cnt[maxn]; // 定義全域性變數時,陣列自動初始化為0!!!!!學習了!!!

void init() //打表。}}

for(int i = 2; i < maxn; ++i) }}

for(int i = 1; i < maxn; ++i)

}int main()

return 0;

}

質因數的個數

求正整數n n 1 的質因數的個數。相同的質因數需要重複計算。如120 2 2 2 3 5,共有5個質因數。可能有多組測試資料,每組測試資料的輸入是乙個正整數n,1對於每組資料,輸出n的質因數的個數。12020055注意1不是n的質因數 若n為質數,n是n的質因數。include include c...

質因數的個數

求正整數n n 1 的質因數的個數。相同的質因數需要重複計算。如120 2 2 2 3 5,共有5個質因數。可能有多組測試資料,每組測試資料的輸入是乙個正整數n,1示例1 120 5 pat.cpp 定義控制台應用程式的 include stdafx.h include stdio.h includ...

質因數的個數

求正整數n n 1 的質因數的個數。相同的質因數需要重複計算。如120 2 2 2 3 5,共有5個質因數。輸入描述 可能有多組測試資料,每組測試資料的輸入是乙個正整數n,1 輸出描述 對於每組資料,輸出n的質因數的個數。示例1 1205import math def judge num 判斷是否是...