Menu
Coddy logo textTech

Euclidean algorithm

Leçon 11 sur 20 du cours Énigmes mathématiques de Coddy.

Une méthode plus efficace est l'algorithme d'Euclide, une variante dans laquelle la différence des deux nombres x et y est remplacée par le reste de la division de y par x.

En notant ce reste y mod x, l'algorithme remplace (x, y) par (x, y mod x) de manière répétée jusqu'à ce que la paire soit (0, d), où d est le plus grand commun diviseur.

challenge icon

Défi

Moyen

Écrivez un code python, gcd2, qui calcule le PGCD, basé sur l'algorithme d'Euclide, qui reçoit un vecteur v avec deux nombres donnés.

À quel point ce code est-il plus rapide par rapport à l'algorithme d'Euclide ?

Essayez vous-même

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include "solution.h"

int main() {
    int v[4096];
    int vn = 0;
    char line[65536];
    if (!fgets(line, sizeof(line), stdin)) line[0] = '\0';
    char* tok = strtok(line, " \t\r\n");
    while (tok) { v[vn++] = atoi(tok); tok = strtok(NULL, " \t\r\n"); }
    int r = gcd2(v, vn);
    printf("%d\n", r);
    return 0;
}

Toutes les leçons de Énigmes mathématiques

6Greatest common divisor

IntroductionEuclidean algorithmPhi function

9Binary numbers

Introduction