解题思路: 枚举(两层嵌套循环枚举)从输入两个数的乘积开始递减循环
注意事项:
参考代码:
#include<stdio.h>
int main()
{
int m, n,a,p;
scanf("%d%d", &m, &n); //输入两个数m,n
a = m * n;
while (1)
{
p = 1;
for (int i = 0; i <= n; i++) //双层嵌套循环枚举
{
for (int j = 0; j <=m ; j++)
{
if (a%m==0||a%n==0||i * m + j * n == a) //当a能被m或n整除时直接a--
{
a--;
p = 0;
break;
}
}
}
if (p == 1)break; //当循环中a不满足条件时推出while循环
}
printf("%d", a); //输出a
return 0;
}
0.0分
34 人评分
在二层循环那里,如果吧n,m互换结果就不一样了,这是为啥?
lllllllll 2022-02-16 15:57:06 |
如果n,m互换,需要两个位置对应互换,i<=n,那么i就要和m相乘
lllllllll 2022-02-16 16:00:43 |
for(int i=0;i<=m;i++){ for(int j=0;j<=n;j++){ if(p%m==0||p%n==0||i*n+j*m==p){ p--; z=0; break; } } if(z==0) break; }
lllllllll 2022-02-16 16:02:53 |
我觉得最里层的break只能跳出内层循环,外层循环继续,会导致不是从头开始判断,无法整除,就会再次从头开始,是否可以加一个if语句进行判断是否找到,找到的话,跳出,方便下次从头寻找
小安 2022-02-18 20:59:24 |
我觉得还可以这样理解:如果是i*n会出现大于最小公倍数的情况
化繁为简 2022-03-22 16:01:43 |
谢谢各位
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:805 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:1110 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:768 |
蚂蚁感冒 (C语言代码)浏览:1408 |
1124题解浏览:630 |
模拟计算器 (C++代码)浏览:885 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:438 |
数组与指针的问题浏览:760 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:729 |
Pascal三角 (C语言代码)浏览:707 |
uq_52514251541 2022-02-21 10:46:35 |
两个偶数,所有的奇数都买不到,不能买的数码无限大