鱼C论坛

 找回密码
 立即注册
查看: 2048|回复: 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 …。
<p> <div class="blockcode"><blockquote>#include<stdio.h>

int main()
{
        int m,n,i,j,k,l,p;
        printf("please input two integer numbers: ");
        scanf("%d %d",&m,&n);
        if(m>=n)
        {
                k=n;
        }
        else
        {
                k=m;
        }
        for(i=1;i<k;i++)
        {
                if((m%i==0)&&(n%i==0))
                {
                        j=i;
                }
        }
        if(m>=n)
        {
                l=m;
        }
        else
        {
                l=n;
        }
        for(i=l;;i++)
        {
                if((i%m==0)&&(i%n==0))
                {
                        p=i;
                        break;
                }
        }
        printf("\nthe greatest common divisor is %d",j);
        printf("\nthe least common multiple is %d",p);

        return 0;

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

QQ截图20141217210810.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-23 10:44:19 | 显示全部楼层
这个代码效率太低,有更好的算法
[/code]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-23 10:47:03 | 显示全部楼层
你的代码问题在17行for(i=1;i<=k;i++)加个=号就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

十分感谢!你的方法果然很好啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-1-20 15:27:25 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-1-20 16:15:43 | 显示全部楼层
3000年前别人就会了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-24 08:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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