CCF NOI 1024 求因子個數

2021-08-14 08:46:35 字數 647 閱讀 2116

對於任意給定的乙個正整數,計算其因數個數。

輸入樣例:

6 輸出樣例:

4 說明:

1、2、3、6都是6的因數。因此,輸出4。

我們開始採用暴力窮舉法來解,但發現有倆組答案超時了,所以,我們要對**進行優化,盡量節省迴圈次數。

問題分析

用窮舉法進行計算,儘量減少窮舉的次數。

若a*b=n,且a>b,則a和b都是n的因子,所以只需要用1到sqrt(n)進行試探即可。同時需要注意,若a*a=n則a為n的因子(只計數1次);若a*b=n且a!=b則需要計數2次。

像計算平方根這樣的計算,要盡量少計算。

最初**:

#include 

using

namespace

std;

int main()

cout

<1

0;}

修改後**:

#include 

#include

using

namespace

std;

int main()

1024 因子個數

1024.因子個數 對於任意給定的乙個正整數,計算其因數個數。輸入樣例 6輸出樣例 4說明 1 2 3 6都是6的因數。因此,輸出4。輸入輸入正整數n。輸出輸出n的因子個數。樣例輸入 6樣例輸出 4資料範圍限制 1 n 2 31 提示1 2 3 6都是6的因數。因此,輸出4。思路 用一般數學方法乙個...

求因子和與因子個數

求因子和與因子個數 包含1和本身 所有因子個數 n 與所有因子的和 n 都是乘 積 性函式。定義1 因子和函式 定義為整數n的所有正因子之和,記為 n 定義2 因子個數函式 定義為正整數n的所有正因子個數,記為 n 定理1 設p是乙個素數,a是乙個正整數,那麼 n 1 p p 2 p a p a 1...

求個數 素數因子

public class primefactor public static void main string args for int i 2 i 100 i system.out.print i 的素數因子有 for int j 2 j2的素數因子有 3的素數因子有 4的素數因子有 2,5的素數...