题目是正整数n和m(<=1000000),输入保证结果在int范围内,因为m*n会溢出,我就让m先除于最大公约数了,然后再乘n可是这样就运行错误了,解释说,浮点错误,检查是否有除以0的情况,俺不懂😭
1条回答 默认 最新
- 技术专家团-小桥流水 2021-10-28 09:02关注
你代码贴错了吧,可以把相乘的结果用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; }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 前端echarts坐标轴问题
- ¥15 CMFCPropertyPage
- ¥15 ad5933的I2C
- ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
- ¥15 数学建模求思路及代码
- ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
- ¥15 谁会P4语言啊,我想请教一下
- ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
- ¥50 求解vmware的网络模式问题 别拿AI回答
- ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳