最多約數問題

2021-09-08 08:19:52 字數 719 閱讀 2499

問題描述:正整數x的約數是能整除x的正整數。設a和b是兩個正整數,a<=b,找出a和b之間約數個數最多的數x。

輸入輸出樣例:

input:

1 36

output:

9還是列舉求a,b之間每個數的約數個數,算約數個數採用分解質因數的方法。

質數p1<p2<p3<……<pn,正整數a分解質因數的結果是:

a=(p1^m1)×

(p2^m2)×

……×(pn^mn)。

那麼,a的所有正約數共有(m1+1)×(m2+1)×……×(mn+1)個。

所有正約數的和為:

(1+p1+p1²+……+p1^m1)

×(1+p2+p2²+……+p2^m2)

×……×(1+pn+pn²+……+pn^mn)。

比如:360=222335,那麼360的約數有43*2=24個。

**實現:

#include//最多約數問題

#includeusing namespace std;

int num(int n)

if(num>0)

} if(n>1) ans*=2; //把小於根號m的數字列舉過了還未將m分解完,說明還有乙個大於根號m的質數約數,因此乘以2

return ans;

}int main()

cout

}

最多約數問題

問題描述 正整數x的約數是能整除x的正整數。正整數x的約數個數記為div x 例如,10有4個約數 1 2 5 10。設a和b是兩個正整數,試計算a和b之間約數個數最多的數x。演算法設計 對於給定的2個正整數a b,程式設計計算a 和 b 之間約數個數最多的數。資料輸入 輸入資料由檔名為input....

最多約數問題

題目分析 正整數 x的約數是能整除x的正整數,其約數的個數記為div x 例如div 10 4。設 a 和 b 是兩個正整數,找出 a 和 b 之間約數個數最多的數 x的約數個數。1 暴力法 依次記錄區間範圍內每乙個數的約束個數,取最大值 int prime int a,int b 2 質因子分解 ...

最多約數問題

正整數x的約數是能整除x的正整數。正整數x的約數個數記為div x 例如,1,2,5,10都是正整數10的約數,且div 10 4。對於給定的2個正整數a b,程式設計計算a與b之間約數個數最多的數。輸入輸入的第1行有兩個正整數a和b。輸出若找到的a和b之間約數個數最多的數是x,則輸出div x 樣...