最大公约数和最小公倍数问题
正解:
#include<iostream>
using namespace std;
int ans=0;
int d(int a,int b){if(a<b) swap(a,b);if(a%b==0) return b;else return d(b,a%b);
}
int x(int a,int b){
return (a*b/d(a,b));
}
int main(){int x0,y0; cin>>x0>>y0;for(int i=x0;i<=y0;i++){ int j=x0*y0/i;if(d(i,j)==x0&&x(i,j)==y0)ans++; }cout<<ans<<endl;return 0;
}
本人在循环时,运用双指针错误的认为小的数的匹配数可能全在最右端,实则不然,应该用
int j=x0*y0/i;
来判断