回 帖 发 新 帖 刷新版面

主题:[讨论]C++求最大公约数算法?

我是个C++初学者,在求最大公约数的时候我没按书上的算法做。我的代码是这样的:
#include<iostream>
using namespace std;
int main()
{
    int k=1;
    int a,b;
    cout<<"Please enter first number : \n";
    cin>>a;
    cout<<"Please enter second number : \n";
    cin>>b;
    while (k<=a&&k<=b)
    {
        if(a%k==0&&b%k==0)
            k+=1;
    }
    cout<<"answer is : "<<k-1;
    return 0;
}
可是它只能运算10以内两个数字!大于10时就没有反应了!我想知道为什么!

回复列表 (共1个回复)

沙发


#include"iostream.h"

int main()
{
int a,b,c,max;
cout<<"分别输入a,b两个数:"<<endl;
cin>>a;
cin>>b;
if(b>a)//若b大于a,则交换a,b的值,保证a比b大
{
    c=a;
    a=b;
    a=c;
}
for(int i=1;i<=b;i++)//逐个计算,一直计算到i=b
{
    if(a%i==0&&b%i==0)
max=i;                     //max保存的就是公约数,最后一个就是最大公约数
    else
        continue;
}
cout<<"输出最大公约数:"<<max<<endl;
return 0;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册