标题:各位大侠帮看一下求最大公约数和最小公倍数程序哪有错误。。。
只看楼主
发掘梦
Rank: 1
等 级:新手上路
帖 子:13
专家分:1
注 册:2009-11-8
结帖率:100%
已结贴  问题点数:20 回复次数:6 
各位大侠帮看一下求最大公约数和最小公倍数程序哪有错误。。。
#include<stdio.h>
int gy(int a,int b)
{
    int i;
    if(a>b)
    {
        while(a%b!=0)
        {
            i=a%b;
            a=b;
            b=i;
        }
        return(b);
    }
    else
    {
        while(b%a!=0)
        {
            i=b%a;
            b=a;
            a=i;
        }
        return(a);
    }
}
int gb(int c,int d)
{
    int k,g;
    k=gb(c,d);
    g=c*d/k;
    return(g);
}
void main()
{
    int m,n,i,j,;
    printf("请分别输入m和n的值:\n");
    scanf("%d,%d",&m,&n);
    i=gy(m,n);
    j=gb(m,n);
    printf("最大公约数是%d\n最小公倍数是%d\n",i,j);
}
搜索更多相关主题的帖子: 公倍数 公约数 
2010-12-22 18:59
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
得分:5 
  int m,n,i,j,;多了个逗号

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2010-12-22 19:08
发掘梦
Rank: 1
等 级:新手上路
帖 子:13
专家分:1
注 册:2009-11-8
得分:0 
没了逗号也不行 楼上的,你是潮州的  那么巧。。。我也是,你是地块人?
2010-12-22 19:35
马后炮
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:156
专家分:560
注 册:2010-12-17
得分:8 
k=gb(c,d);

是不是这里的gb写错了,应该是gy?

樱之雪,晓之车
2010-12-22 19:41
拂晓晨曦
Rank: 2
等 级:论坛游民
帖 子:87
专家分:44
注 册:2010-10-31
得分:0 
求最大公约数太麻烦了,
是不是一定要比较a和b的大小???
2010-12-22 19:47
马后炮
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:156
专家分:560
注 册:2010-12-17
得分:0 
我觉得不一定,甚至不需要

樱之雪,晓之车
2010-12-22 19:50
zhaoya881010
Rank: 9Rank: 9Rank: 9
来 自:芒砀古郡
等 级:蜘蛛侠
威 望:1
帖 子:339
专家分:1177
注 册:2010-11-21
得分:7 
程序:
程序代码:
#include<stdio.h>
void main()
{
    int gys(int,int);
    int gbs(int,int);
    int num1,num2,Gys,Gbs;          //Gys是最大公约数,Gbs是最小公倍数。
    printf("请你输入两个数:");
    scanf("%d,%d",&num1,&num2);
    Gys=gys(num1,num2);
    Gbs=gbs(num1,num2);
    if(Gys==1)
        printf("没有最大公约数\n");
    else
        printf("两个数的最大公约数是%d\n",Gys);
    printf("两个数的最小公倍数是%d\n",Gbs);
}
int gbs(int num1,int num2)//求两个数的最小公倍数。
{   int gys(int,int);
int Gbs,ys;
ys=gys(num1,num2);
Gbs=num1*num2/ys;
return(Gbs);
}

int gys(int num1,int num2)//求两个数的最大公约数。
{
    int t,ys=1;//ys是余数,t是中间变量。
    int i=2;
    if(num1<num2)
    {
        t=num1;
        num1=num2;
        num2=t;
    }
    if(num1%num2==0)return num2;
    else
    {
        while(1)
        {
            if((num1%i==0) && (num2%i == 0))
            {
                ys*=i;
                num1=num1/i;
                num2=num2/i;
            }
            if(i==num2)
                return ys;
            i++;
        }
    }
}
结果:


Go Go Go
2010-12-23 11:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-329623-1-1.html




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

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