Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

Euclidean algorithm

الدرس 11 من 20 في دورة ألغاز رياضية على Coddy.

هناك طريقة أكثر كفاءة وهي خوارزمية إقليدس، وهي نسخة يتم فيها استبدال الفرق بين الرقمين x و y بـ باقي قسمة y على x.

مع التعبير عن هذا الباقي بـ y mod x، تقوم الخوارزمية باستبدال (x, y) بـ (x, y mod x) بشكل متكرر حتى يصبح الزوج (0, d)، حيث d هو القاسم المشترك الأكبر.

challenge icon

التحدي

متوسط

اكتب كود بايثون، gcd2، يقوم بحساب القاسم المشترك الأكبر (GCD)، بناءً على خوارزمية إقليدس، والذي يستقبل متجهاً v يحتوي على رقمين معطيين.

ما مدى سرعة هذا الكود مقارنة بخوارزمية إقليدس؟

جرّب بنفسك

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

جميع دروس ألغاز رياضية

6Greatest common divisor

IntroductionEuclidean algorithmPhi function

9Binary numbers

Introduction