| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1534 人关注过本帖
标题:求助,编写求解最大公约数的函数
只看楼主 加入收藏
pcbaichi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:486
专家分:1185
注 册:2010-11-13
收藏
得分:0 
回复 9楼 smileRan
int gy=(a,b);
这步我知道你要干什么,但是随时定义int XX;    这是C++的写法,而且你这不是调用函数,写法本身就是错的

免费赠送河蟹一只
2011-04-04 17:58
smileRan
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2011-4-4
收藏
得分:0 
回复 10楼 pcbaichi
我又改过了,可以用了!
#include<stdio.h>
int gy(int x,int y)
{
    int t,r;
    if(y>x)
    {
        t=x;
        x=y;
        y=t;
    }
    r=x%y;
    while(r!=0)
    {
        x=y;
        y=r;
        r=x%y;
    }
    return (y);
}
main()
{
    int x,y,g;
    printf("请输入整数x和y:\n");
    scanf("%d,%d",&x,&y);
    g=gy(x,y);
    printf("最大公约数是:%d\n",g);
}
2011-04-04 19:09
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
回复 12楼 smileRan
这个算法会了你就可以去“拿来”2楼的代码了。
2011-04-04 20:40
chenwei435
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:322
专家分:1611
注 册:2010-11-28
收藏
得分:0 
程序代码:
#include<stdio.h>
int gy(int x,int y) 
{
    if(y==0)
    return x;
    else
    return gy(y,x%y);
}
void main()
{
    int a,b,t;
    printf("请输入两个数:\n");
    scanf("%d,%d",&a,&b);
    if(a>b)
        t=gy(a,b);
    else
        t=gy(b,a);
    printf("最大公约数为:%d\n",t);
}
2011-04-05 12:53
chenwei435
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:322
专家分:1611
注 册:2010-11-28
收藏
得分:0 
用更相减损术求最大公约数,我们知道,就是拿大的数减小的数直至减数和差相等,这个数就是最大公约数。
程序代码:
#include<stdio.h>
int gy(int x,int y) 
{
    int temp;
    while(1)
    {
        temp=x-y;
        if(y==temp)
        {
            break;  /*如果减数和差相等就跳出循环*/  
        }
        if(temp>y)
        {
            x=temp;
        }
        else
        {
            x=y;
            y=temp;
        }
    }
    return temp;
}
void main()
{
    int a,b,t;
    printf("请输入两个数:\n");
    scanf("%d,%d",&a,&b);
    if(a>b)
        t=gy(a,b);
    else
        t=gy(b,a);
    printf("最大公约数为:%d\n",t);
}



[ 本帖最后由 chenwei435 于 2011-4-5 13:08 编辑 ]
2011-04-05 13:05
hufuyin
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-3-4
收藏
得分:0 
轻轻的飘过
2011-04-05 14:40
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
以下是引用chenwei435在2011-4-5 13:05:34的发言:

用更相减损术求最大公约数,我们知道,就是拿大的数减小的数直至减数和差相等,这个数就是最大公约数。

#include<stdio.h>
int gy(int x,int y)
{
    int temp;
    while(1)
    {
        temp=x-y;
        if(y==temp)
        {
            break;  /*如果减数和差相等就跳出循环*/  
        }
        if(temp>y)
        {
            x=temp;
        }
        else
        {
            x=y;
            y=temp;
        }
    }
    return temp;
}
void main()
{
    int a,b,t;
    printf("请输入两个数:\n");
    scanf("%d,%d",&a,&b);
    if(a>b)
        t=gy(a,b);
    else
        t=gy(b,a);
    printf("最大公约数为:%d\n",t);
}

学习了!!!

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-05 15:38
pang1567
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:5
专家分:5
注 册:2011-4-5
收藏
得分:0 

坚持、细心是成功的必修课
2011-04-05 19:58
快速回复:求助,编写求解最大公约数的函数
数据加载中...
 
   



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

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