對於任意給定的乙個正整數,計算其因數個數。我們開始採用暴力窮舉法來解,但發現有倆組答案超時了,所以,我們要對**進行優化,盡量節省迴圈次數。輸入樣例:
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的素數...