程序说明
a * b = gcd * lcm。
注意循环只遍历了前一部分(即第一个数小于√(gcd * lcm))如3,60,没有遍历后半部分如60,3。因此最后的结果需要乘以2。
代码如下:
#include <iostream>
using namespace std;
int gcd(int a, int b) {
return b ? gcd(b, a % b) : a;
}
int cnt;
int main() {
int m, n;
cin>>m>>n;
for(int i = 1; i * i <= m * n; i++) {
if(gcd(i, (n * m / i)) == m && (n * m) % i == 0)
cnt++;
}
cout<<cnt * 2<<endl;
return 0;
}