| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 960 人关注过本帖
标题:求最大公约数和最小公倍数 为什么运行出来的最大公约数不对啊
只看楼主 加入收藏
美美学c
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2023-9-9
结帖率:87.5%
收藏
已结贴  问题点数:10 回复次数:6 
求最大公约数和最小公倍数 为什么运行出来的最大公约数不对啊
#include <stdio.h>
#define M 10
int main() {
  int i,m,n,t,a,b,c,d;
scanf("%d,%d",&m,&n);
if(m<n)
{t=m;
m=n;
n=t;
}
for(a=1;a<m;a++)
for(b=1;b<=m;b++)
{c=m*a;
d=n*b;
if(d==c) break;
}
printf("最小公倍数为%d",d);
i=n%m;
t=i;
if(i!=0)
{i=n%t;
n=i;
i=t;
printf("最大公约数为%d",t);
}
else printf("最大公约数为%d",n);

return 0;
}
搜索更多相关主题的帖子: 求和 printf 运行 最大公约数 最小公倍数 
2023-09-30 21:16
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:633
专家分:3045
注 册:2011-4-22
收藏
得分:0 
我怎么就看不懂呢?

2023-09-30 22:51
邹生笑谈
Rank: 2
等 级:论坛游民
帖 子:16
专家分:48
注 册:2020-12-5
收藏
得分:3 
回复 楼主 美美学c
什么,我输入【3.9】得出【27和3】,【4,6】得出【24,4】
算法我看不懂,但应该错了。上网找找怎么求公约数和公倍数吧(我也不会)。

另外,记得写注释,和进行代码缩进,还有最外层for别省略{},变量名有点意思可以看看别人怎么命名的。


程序代码:
//m>n最小公倍数肯定最大为n*m,最小为m
    n*m;
    //法一:用for从m到n*m一个个比对,符合第一个%以m和n都余0的条件的的就返回
    //法2:网上百科说,先求最大公约数,再根据它求最小公倍数
    
2023-10-01 15:34
美美学c
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2023-9-9
收藏
得分:0 
回复 3楼 邹生笑谈
想到什么就写了 逻辑比较乱 算法也错了
好的 感谢大佬指教
2023-10-01 20:16
沈和
Rank: 4
等 级:业余侠客
威 望:5
帖 子:45
专家分:214
注 册:2019-8-26
收藏
得分:7 
#include <stdio.h>
int main() {
  int i, m, n, t, a, b, c, d;
  scanf("%d,%d", &m, &n);
  if (m < n) { // ensure m >= n
    t = m;
    m = n;
    n = t;
  }

  // find m*a == n*b, m*a is 最小公倍数
  for (a = 1; a < m; a++) {
    for (b = 1; b <= m; b++) {
      c = m * a;
      d = n * b;
      if (d == c)
        goto out; // here
    }
  }

out:
  printf("最小公倍数为 %d\n", d);
  printf("最大公约数为 %d\n", m * n / d);

  return 0;
}


// 有更简单的方法来解决这个问题
// 最大公约数 Greatest Common Divisor
// 辗转相除法
// int gcd(int a, int b) { return a == 0 ? b : gcd(b % a, a); }

// 最小公倍数 Leatest Common Multiple
// int lcm(int a, int b) { return a * b / gcd(a, b); }

// int main(void) {
//   int m, n;
//   scanf("%d,%d", &m, &n);
//   printf("gcd(%d,%d)=%d\n", m, n, gcd(m, n));
//   printf("lcm(%d,%d)=%d\n", m, n, lcm(m, n));
//   return 0;
// }


[此贴子已经被作者于2023-10-1 20:48编辑过]

2023-10-01 20:39
美美学c
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2023-9-9
收藏
得分:0 
回复 5楼 沈和
哇哇哇这个gcd,lcm太优美了
2023-10-02 20:09
美美学c
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2023-9-9
收藏
得分:0 
回复 5楼 沈和
大佬 为什么第一个程序的最小公约数直接输出m*n呢
!!!看见除d啦



[此贴子已经被作者于2023-10-2 20:17编辑过]

2023-10-02 20:14
快速回复:求最大公约数和最小公倍数 为什么运行出来的最大公约数不对啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018446 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved