問題描述:正整數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 樣...