Największy wspólny dzielnik wielkich liczb

0

Zadanie napisać w c++ !

Dane są trzy liczby naturalne: x, a, b. Mamy za zadanie obliczyć NWD(x, a*x+b).

Wejście
Trzy liczby naturalne x, a, b (1 ≤ x, a, b ≤ 10^15).

Wyjście
Jedna liczba naturalna, równa NWD(x, a*x+b).

Przykład
Dla liczb

100 17 42
Twój program powinien wypisać liczbę
2

mój kod :

#include<iostream>
using namespace std;
int p(int a, int b)
{
    int x;
    do
    {
        x=a%b;
        a=b;
        b=x;
    }
    while(x!=0);
    return a;
}
int main()
{
    ios_base::sync_with_stdio(0);
    int x,a,b;
    cin>>x>>a>>b;
    b=a*x+b;
    cout<<p(x,b);

    return 0;
}

Wie ktoś może co mam źle i chciałyby pomóc ?

0

Co liczy Twoja funkcja p?

0
Patryk27 napisał(a):

Co liczy Twoja funkcja p?
p oznacza algorytm euklidesa tylko ze robiony z reszt a nie odejmowaniem

0

Co się dzieje, daje złe wyniki, nie kompiluje się, runetime error?

3

Zauważ, że w zadaniu nie bez powodu jest określone, abyś wyliczył NWD(x, a*x+b) (zamiast np. po prostu NWD(a, b)); rzuć okiem na własności funkcji NWD.

0

Udało się jakby ktoś kiedyś miał z tym też problem to chodzi tu o to że "a=a*x+b; cout<<p(x,a);" z tego nwd można zapisać jako "nwd(x,b)"

1 użytkowników online, w tym zalogowanych: 0, gości: 1