标题:最大公约数问题?求助!!!
取消只看楼主
Incomplete
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-8-4
结帖率:66.67%
已结贴  问题点数:10 回复次数:1 
最大公约数问题?求助!!!
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int x,y;
    cout<<"please enter two integer numbers:";
    cin>>x>>y;
    x=(x+y+fabs(x-y))/2;
    y=(x+y-fabs(x-y))/2;
    int r;
    do
    {
        r=x%y;
        x=y;
        y=r;
    }
    while(r);
    cout<<"The common denominator is: "<<x<<endl;
    return 0;
}

运行结果:

7和8的最大公约数不是1吗?怎么是8,是我写的程序有错吗?还望高手指教,谢谢!
搜索更多相关主题的帖子: 最大公约数 
2010-08-08 22:52
Incomplete
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-8-4
得分:0 
回复 3楼 pangding
谢谢!看来不能乱用max=(a+b+fabs(a-b))/2;和min=(a+b-fabs(a-b))/2;这个公式。
我写了个递归的:
#include<iostream>
using namespace std;
int GCD(int x,int y)
{
    if(x%y==0)
        return y;
    return GCD(y,x%y);
}
int main()
{
    int x,y;
    cout<<"please enter two integer numbers:";
    cin>>y>>x;
    cout<<"The common denominator is: "<<GCD(x,y)<<endl;
    return 0;
}

[ 本帖最后由 Incomplete 于 2010-8-9 13:45 编辑 ]
2010-08-09 13:36



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




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

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