小编use*_*851的帖子

euclid的扩展算法C++

我遇到了Euclid扩展算法的问题.(ax + by = gcd(a,b))我试图确定GCD和x和y.GCD不是问题,但使用循环方法x和y出错了.通常一个数字为0,另一个数字为异常大的负数.代码如下:

#include <iostream>

using namespace std;

main ()
{
    int a,b,q,x,lastx,y,lasty,temp,temp1,temp2,temp3;
    cout << "Please input a" << endl;
    cin >> a; 
    cout << "Please input b" << endl;
    cin >> b;
    if (b>a) {//we switch them
        temp=a; a=b; b=temp;
    }
    //begin function
    x=0;
    y=1;
    lastx=1;
    lasty=0;
    while (b!=0) {
        q= a/b;
        temp1= a%b;
        a=b;
        b=temp1;

        temp2=x-q*x;
        x=lastx-q*x;
        lastx=temp2;

        temp3=y-q*y;
        y=lasty-q*y;
        lasty=temp3;
    }

    cout << "gcd" << a << endl;
    cout << "x=" << lastx << endl; …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm

11
推荐指数
2
解决办法
2万
查看次数

标签 统计

algorithm ×1

c++ ×1