开发者社区> 问答> 正文

求最大公约数的c++源代码,要用我的方法,但是运行不了

/*第一步:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;
若不是则执行第二步。
第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。
继续这个操作,直到所得的减数和差相等为止。
则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。*/

#include //用更相减损术计算最大公约数
#include 
using namespace std;
int main (void)
{
int a;
int b;
int max;
int n=1;
printf("a=");
scanf ("%d",&a);
printf("b=");
scanf ("%d",&b);
for( n=2;a%2==0 && b%2==0;n+=2)
{
a=a/2;
b=b/2;
}
if (a<b)
{
max=b;
b=a;
a=max;

}
while(a!=b)
{
int c;
c=a-b;
a=b;
b=c;
}
printf ("最大公约数=%d",a*n);
return 0;
}

展开
收起
a123456678 2016-03-06 11:18:02 2021 0
1 条回答
写回答
取消 提交回答
  • int main (void)
    {
    int a;
    int b;
    int max;
    int n=1;
    printf("a=");
    scanf ("%d",&a);
    printf("b=");
    scanf ("%d",&b);
    for(;a%2==0 && b%2==0;n*=2)//这里n是前面2的乘机,不是2的和
    {
    a=a/2;
    b=b/2;
    }
    if (a<b)
    {
    max=b;
    b=a;
    a=max;
    
    }
    while(a!=b)
    {
        int c;
        c=a-b;
        if(b>c){//需要判断B和C的大小再做减法
           a=b;
           b=c;
        }else{
           a=c;
        }
    }
    printf ("最大公约数=%d",a*n);
    return 0;
    }
    2019-07-17 18:54:19
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载