السلطان
  1. الرئيسية
  2. الأمثلة
  3. الخوارزميات

خوارزمية إقليدس مكتوبة يدويا ومقارنة بالمكتبة القياسية

algorithms/gcd.sn
// خوارزمية إقليدس مكتوبة يدويا ومقارنة بالمكتبة القياسية.
استورد std.io.println;
استورد std.text.number;
استورد std.math.integer;

عرف إقليدس(أ: طبيعي, ب: طبيعي): طبيعي {
    دع س: متغير طبيعي = أ;
    دع ص: متغير طبيعي = ب;
    طالما (ص != 0) {
        دع الباقي: طبيعي = س % ص;
        س := ص;
        ص := الباقي;
    }
    أرجع س;
}

عرف الرئيسية(): عدد {
    اطبع_سطر(طبيعي_إلى_نص(إقليدس(1071, 462)));
    اطبع_سطر(طبيعي_إلى_نص(القاسم_المشترك_الأكبر(1071, 462)));
    // المضاعف المشترك الأصغر يرجع `اختياري`: قد لا يتسع الناتج في `طبيعي`.
    طابق المضاعف_المشترك_الأصغر(4, 6) مع
    | اختياري.موجود(القيمة) -> { اطبع_سطر(طبيعي_إلى_نص(القيمة)); }
    | اختياري.لا_شيء -> { اطبع_سطر("تجاوز"); };
    أرجع 0;
}

التشغيل

بالمفسر، دون ترجمة:

./build/sultanc run examples/ar/algorithms/gcd.sn

أو ترجمه إلى ملف تنفيذي:

./build/sultanc examples/ar/algorithms/gcd.sn -o build/example && ./build/example

المصدر على GitHub   كل الأمثلة