例题一:
洛谷oj——最大公约数和最小公倍数问题
参考:https://blog.csdn.net/qq_43398760/article/details/83243940
思路:两个数的最大公约数和最小公倍数的乘积就是这两个数的乘积
#include<iostream>
#include<cmath>
using namespace std;
int gcd(int a,int b){
if(b==0){
return a;
}
return gcd(b,a%b);
}
int main()
{
int h,l;
cin>>h>>l;
int cnt=0;
for(int i=1;i<=sqrt(h*l);i++){
if((h*l)%i==0&&gcd(i,(h*l)/i)==h){ //这里是判断条件:保证i是h*l的因子而且i和另外一个因子(i,(h*l)/i)的最大公因数是h
cnt++;
}
}
cout<<cnt*2; //这里是因为P、Q可以进行交换
return 0;
}
例题二:
洛谷oj——约数研究
参考:https://blog.csdn.net/x806073382/article/details/52219727
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
long long cnt=0;
for(int i=1;i<=n;i++) {
cnt+=n/i;
}
cout<<cnt;
return 0;
}