Namespaces
Variants

std:: gcd

From cppreference.net
Défini dans l'en-tête <numeric>
template < class M, class N >
constexpr std:: common_type_t < M, N > gcd ( M m, N n ) ;
(depuis C++17)

Calcule le plus grand commun diviseur des entiers m et n .

Si soit M soit N n'est pas un type entier, ou si l'un ou l'autre est (éventuellement qualifié cv) bool , le programme est mal formé.

Si l'un des deux | m | ou | n | n'est pas représentable comme une valeur de type std:: common_type_t < M, N > , le comportement est indéfini.

Table des matières

Paramètres

m, n - valeurs entières

Valeur de retour

Si les deux m et n sont nuls, retourne zéro. Sinon, retourne le plus grand commun diviseur de | m | et | n | .

Exceptions

Ne lance aucune exception.

Notes

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_gcd_lcm 201606L (C++17) std::gcd , std::lcm

Exemple

#include <numeric>
int main()
{
    constexpr int p{2 * 2 * 3};
    constexpr int q{2 * 3 * 3};
    static_assert(2 * 3 == std::gcd(p, q));
    static_assert(std::gcd( 6,  10) == 2);
    static_assert(std::gcd( 6, -10) == 2);
    static_assert(std::gcd(-6, -10) == 2);
    static_assert(std::gcd( 24, 0) == 24);
    static_assert(std::gcd(-24, 0) == 24);
}

Voir aussi

(C++17)
calcule le plus petit commun multiple de deux entiers
(modèle de fonction)