3月30日
这一个题目主要用到了数论,我们计算最大公约数与最小公倍数。
最小公倍数可以利用公式:
最小公倍数=两数的 乘积 /最大公约(因)数 。
最大公约数有两种方法
1.
辗转相除法:
- 用辗转相除法求几个数的最大公约数 :可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数。
2.
更相减损法
第一步:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。
第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。
则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。
#include<iostream>
using namespace std;
int check(int i,int j){
int k ,t = 1;
if(i<j){
k = i;
i = j;
j = k;
}
while(t) {
t = i%j;
i = j;
j = t;
}
return i;
}
int main(){
int x,y,j,s = 0;
cin>>x>>y;
for(int i = x;i<=y;i+=x){
if((x*y)%i == 0){
j = x*y/i;
if(check(i,j)==x){
s++;
}
}
}
cout<<s<<endl;
return 0;
}