gcd最大公约数greatest common divisor
用辗转相除法,理解:
按照这可以写的代码:
int main() {
int m, n, t, gcd;
cin >> m >> n;
int r = m % n;
while (r != 0) {
m = n;
n = r;
r = m % n;
}
gcd = n;
cout << gcd << endl;
return 0;
}
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
//或者这样写
int gcd(int a,int b)
{
if(b==0) return a;
return gcd(b,a%b);
}
lcm最小公倍数least common multiple
lcm=(a*b) / |gcd(a,b)|
#include<stdio.h>
typedef long long ll;
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
int main()
{
int a,b;
while(scanf("%d %d",&a,&b)!=EOF)
{
printf("%lld\n",1ll*a*b/gcd(a,b));//需要用long long 1ll这是个ll型的1,乘上后面的强制转换
}
return 0;
}