题目是正整数n和m(<=1000000),输入保证结果在int范围内,因为m*n会溢出,我就让m先除于最大公约数了,然后再乘n可是这样就运行错误了,解释说,浮点错误,检查是否有除以0的情况,俺不懂😭
你代码贴错了吧,可以把相乘的结果用long long 类型保存。
参考如下:
#include <stdio.h>
int main()
{
int m,n;
int t,gys;
long long gbs;
scanf("%d %d",&m,&n);
if(m>n)
t =n;
else
t = m;
//先求公约数
for (;t>=1;t--)
{
if(m%t==0 && n%t==0)
break;
}
gys = t;
gbs = (long long)m/t*n;
printf("%d 和%d 的公约数是%d,公倍数是%lld",m,n,gys,gbs);
return 0;
}