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

غربال إراتوستينس

كل الأعداد الأولية الأصغر من 50.

algorithms/sieve.sn
// غربال إراتوستينس: كل الأعداد الأولية الأصغر من 50.
استورد std.io.println;
استورد std.text.number;
استورد std.text.transform;

عرف الرئيسية(): عدد {
    دع الحد: طبيعي = 50;
    دع مركب: متغير متجه منطقي = [];
    دع ف: متغير طبيعي = 0;
    طالما (ف < الحد) { ألحق(مركب, خطأ); ف := ف + 1; }
    دع الأوليات: متغير متجه نص = [];
    دع المرشح: متغير طبيعي = 2;
    طالما (المرشح < الحد) {
        إذا (!مركب[المرشح]) {
            ألحق(الأوليات, طبيعي_إلى_نص(المرشح));
            دع المضاعف: متغير طبيعي = المرشح * المرشح;
            طالما (المضاعف < الحد) {
                مركب[المضاعف] := صواب;
                المضاعف := المضاعف + المرشح;
            }
        };
        المرشح := المرشح + 1;
    }
    دع المسافة: نص = " ";
    اطبع_سطر(صل_النصوص(&الأوليات, &المسافة));
    أرجع 0;
}

التشغيل

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

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

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

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

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