الانتقال إلى المحتوى الرئيسي
  • primes() – يعيد جدولًا لا نهائيًا بعمود prime واحد (UInt64) يحتوي على أعداد أولية مرتبة ترتيبًا تصاعديًا، بدءًا من 2. استخدم LIMIT (واختياريًا OFFSET) لتقييد عدد الصفوف.
  • primes(N) – يعيد جدولًا بعمود prime واحد (UInt64) يحتوي على أول N عددًا أوليًا، بدءًا من 2.
  • primes(N, M) – يعيد جدولًا بعمود prime واحد (UInt64) يحتوي على M عددًا أوليًا، بدءًا من العدد الأولي ذي الفهرس N (بفهرسة تبدأ من 0).
  • primes(N, M, S) – يعيد جدولًا بعمود prime واحد (UInt64) يحتوي على M عددًا أوليًا، بدءًا من العدد الأولي ذي الفهرس N (بفهرسة تبدأ من 0)، وبخطوة S وفق فهرس العدد الأولي. تتوافق الأعداد الأولية المعادة مع الفهارس N, N + S, N + 2S, ..., N + (M - 1)S. يجب أن تكون S >= 1.
هذا مشابه لجدول النظام system.primes. الاستعلامات التالية متكافئة:
الاستعلامات التالية متكافئة أيضًا:

أمثلة

أول 10 أعداد أولية.
أول عدد أولي أكبر من 1e15.
حلّ قيدًا توافقيًا على الأعداد الأولية ضمن نطاق كبير جدًا: اعثر على أول عدد أولي p >= 10^15 بحيث يكون باقي قسمة p على 65537 مساويًا لـ 1.
الأعداد الأولية المرسينية السبعة الأولى.

ملاحظات

  • أسرع الصيغ هي استعلامات النطاق البسيطة واستعلامات ترشيح النقاط التي تستخدم قيمة step الافتراضية (1)، على سبيل المثال، primes(N) أو primes() LIMIT N. تستخدم هذه الصيغ مولّدًا محسّنًا للأعداد الأولية لحساب أعداد أولية كبيرة جدًا بكفاءة.
  • بالنسبة إلى المصادر غير المحدودة (primes() / system.primes)، يمكن تطبيق مرشّحات قيم بسيطة مثل prime BETWEEN ... أو prime IN (...) أو prime = ... أثناء التوليد لتقييد نطاقات القيم التي يجري البحث فيها. على سبيل المثال، يُنفَّذ الاستعلام التالي بشكل شبه فوري:
  • لا ينطبق تحسين نطاق القيم هذا على دوال الجداول المقيّدة (primes(N), primes(offset, count[, step])) مع WHERE، لأن هذه الصيغ تحدد جدولًا محدودًا وفق ترتيب الأعداد الأولية، ويجب تقييم عامل التصفية بعد إنشاء ذلك الجدول للحفاظ على الدلالات.
  • قد يكون استخدام offset غير صفري و/أو step أكبر من 1 (primes(offset, count) / primes(offset, count, step)) أبطأ، لأنه قد يلزم داخليًا توليد أعداد أولية إضافية وتخطيها. إذا لم تكن بحاجة إلى offset أو step، فتجاهلهما.
آخر تعديل في ٢ يوليو ٢٠٢٦