Menu
Coddy logo textTech

Euclidean algorithm

Lektion 11 von 20 im Kurs Mathematische Rätsel von Coddy.

Eine effizientere Methode ist der euklidische Algorithmus, eine Variante, bei der die Differenz der beiden Zahlen x und y durch den Rest der Division von y durch x ersetzt wird.

Bezeichnet man diesen Rest als y mod x, ersetzt der Algorithmus (x, y) wiederholt durch (x, y mod x), bis das Paar (0, d) ist, wobei d der größte gemeinsame Teiler ist.

challenge icon

Aufgabe

Mittel

Schreiben Sie Python-Code, gcd2, der den ggT basierend auf dem euklidischen Algorithmus berechnet und einen Vektor v mit zwei gegebenen Zahlen erhält.

Wie viel schneller ist dieser Code im Vergleich zum euklidischen Algorithmus?

Probier es selbst

#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;
}

Alle Lektionen in Mathematische Rätsel

6Greatest common divisor

IntroductionEuclidean algorithmPhi function

9Binary numbers

Introduction