C++ obliczanie największego współnego dzielnika

0

Próbuje stworzyc program aby wyszedl tylko wpólny dzielnik najwiekszy, jak mam zrobic zeby wypisalo tylko go a nie wszystkie dzielniki wspolne?

#include

using namespace std;

int a, b;
int main()
{
    cin >> b;
    cin >> a;
    for (int i = 1; i <= a; i++) {
        if (a % i == 0)
            if (b % i == 0)
                cout << i << endl;
    }
    return 0;
}
1

Zapamiętuj go gdzieś i wypisz poza for-em, albo też zacznij od i = a i idź w dół. Wtedy po trafieniu przerywasz for-a komendą break;

1

Są też trochę bardziej cywilizowane:) metody liczenia gcd:
https://en.wikipedia.org/wiki/Euclidean_algorithm

2

W C++17 masz gotową funkcję dostępną w <numeric>: std::gcd

#include <numeric>
#include <iostream>

int main(int, char**)
{
  int a, b;
  std::cin >> a;
  std::cin >> b;
  std::cout << "Najwiekszy wspolny dzielnik: " << std::gcd(a, b) << '\n';
  return 0;
}

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