鱼C论坛

 找回密码
 立即注册
查看: 2275|回复: 6

求大神帮忙一个菜鸟级的问题

[复制链接]
发表于 2014-12-17 21:04:58 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 无情修罗 于 2014-12-17 21:08 编辑

 输入两个正整数m和n,求其最大公约数和最小公倍数。注:最大公约数也称最大公因子,指某几个整数共有因子中最大的一个;两个整数公有的倍数称为它们的公倍数,其中最小的一个正整数称为它们两个的最小公倍数。编程可用素材:printf("please input two integer numbers: ")、printf("\nthe greatest common divisor is …、printf("\nthe least common multiple is …。

  1. <p> <div class="blockcode"><blockquote>#include<stdio.h>

  2. int main()
  3. {
  4.         int m,n,i,j,k,l,p;
  5.         printf("please input two integer numbers: ");
  6.         scanf("%d %d",&m,&n);
  7.         if(m>=n)
  8.         {
  9.                 k=n;
  10.         }
  11.         else
  12.         {
  13.                 k=m;
  14.         }
  15.         for(i=1;i<k;i++)
  16.         {
  17.                 if((m%i==0)&&(n%i==0))
  18.                 {
  19.                         j=i;
  20.                 }
  21.         }
  22.         if(m>=n)
  23.         {
  24.                 l=m;
  25.         }
  26.         else
  27.         {
  28.                 l=n;
  29.         }
  30.         for(i=l;;i++)
  31.         {
  32.                 if((i%m==0)&&(i%n==0))
  33.                 {
  34.                         p=i;
  35.                         break;
  36.                 }
  37.         }
  38.         printf("\nthe greatest common divisor is %d",j);
  39.         printf("\nthe least common multiple is %d",p);

  40.         return 0;

  41. }
复制代码

这是我写的可是提交答案时提示失分[20],未实现:m与n相等时的公约数与公倍数正确
希望帮忙解决一下.谢谢!

QQ截图20141217210810.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-12-17 21:04:59 | 显示全部楼层
  1. #include<stdio.h>
  2. void main()   /*  辗转相除法求最大公约数 */
  3. {
  4.    int m, n, a, b, c;
  5.    printf("Input two integer numbers:\n");
  6.    scanf("%d%d", &a, &b);
  7.    m=a;   n=b;
  8.    while(b!=0)  /* 余数不为0,继续相除,直到余数为0 */
  9.    { c=a%b; a=b;  b=c;}
  10.    printf("The largest common divisor:%d\n", a);
  11.    printf("The least common multiple:%d\n", m*n/a);
  12. }
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
无情修罗 + 5 + 5 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-12-23 10:44:19 | 显示全部楼层
这个代码效率太低,有更好的算法
[/code]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-12-23 10:47:03 | 显示全部楼层
你的代码问题在17行for(i=1;i<=k;i++)加个=号就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-12-23 13:03:41 | 显示全部楼层
zx154140599 发表于 2014-12-23 10:47
你的代码问题在17行for(i=1;i

十分感谢!你的方法果然很好啊!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-1-20 15:27:25 | 显示全部楼层
学习一下
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-1-20 16:15:43 | 显示全部楼层
3000年前别人就会了,
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-18 16:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表