فحص أعداد ميرسين الأولية باختبار لوكاس-ليمر
يستقبل هذا الفاحص أساً أولياً p ويقرر ما إذا كان العدد 2^p - 1 أولياً. ويطبق اختبار لوكاس-ليمر الحتمي المتخصص في أعداد ميرسين، ثم يعيد العدد الدقيق وعدد التكرارات والباقي النهائي. يُتحقق من الأس أولاً لأن الأس المركب لا ينتج عدداً أولياً من أعداد ميرسين. وبذلك يمكنكم التمييز بين طلب غير صالح واختبار صالح انتهى إلى أن العدد مركب.
شغّل الأداة مجانًا
اختيار الأس والتحقق منه
أدخلوا عدداً صحيحاً p بين 2 و10,000. يقبل الفاحص الحقل p والاسم البديل exponent، كما يقبل سلسلة نصية تمثل عدداً صحيحاً. قبل إنشاء العدد، يتأكد بالقسمة التجريبية الحتمية من أن p أولي. وهذا شرط رياضي لا مجرد تحسين للأداء: إذا كان p مركباً فإن 2^p - 1 يقبل تحليلاً جبرياً. لذلك ينتج هذا الإدخال خطأً بدلاً من نتيجة سالبة. فالنتيجة السالبة تعني أن أساً أولياً اختُبر بصورة صحيحة لكن عدد ميرسين المقابل مركب. كما تُرفض الكسور والحقول المفقودة والمصفوفات والنصوص غير الرقمية والقيم الواقعة خارج النطاق المنشور بوضوح.
فهم حساب لوكاس-ليمر
بعد التحقق من p، ينشئ النظام M = 2^p - 1 بحساب BigInt دقيق. عندما يكون p أولياً فردياً يبدأ من s = 4، ثم يستبدل s بمربعه ناقص 2 بعد اختزاله بترديد M، ويكرر ذلك p - 2 مرة بالضبط. يكون M أولياً إذا وفقط إذا كان الباقي النهائي صفراً. لا يستخدم الحساب تقريباً ولا شهوداً احتماليين ولا شبكة ولا عشوائية. أما p = 2 فيعطي M = 3 دون تكرارات وبباقٍ صفري. تعرض الاستجابة العدد العشري الدقيق والقرار والطريقة وعدد التكرارات والباقي النهائي، كي تتمكنوا من إعادة الحساب ومراجعته.
تفسير النتيجة واستخدامها
يشير is_prime إلى الحكم على عدد ميرسين، لا إلى الأس الذي سبق التحقق منه. تعني القيمة الصحيحة أن الباقي النهائي صفر، وتعني القيمة الخاطئة أن p أولي لكن 2^p - 1 مركب. يُعاد mersenne وfinal_residue كسلسلتين عشريتين لتجنب فقدان دقة أعداد JSON. تلائم الأداة التعليم واختبارات الانحدار والعروض الرياضية والفحوص المحدودة. وهي ليست خدمة بحث غير محدود، إذ يقيّم كل طلب أساً واحداً ضمن الحد المعلن. ينفذ المتصفح المنطق الحتمي نفسه الذي تنفذه API، وتكلفة كل استدعاء آلي هي $0.002. ولأن النتيجة لا تتغير، يُستحسن تخزينها مؤقتاً في الأنظمة كثيفة الاستخدام.
حالات الاستخدام
التحقق من أس مرشح
تأكدوا من استيفاء عدد ميرسين المرتبط بأس أولي لمعيار لوكاس-ليمر بدقة.
شرح التكرار المعياري
اعرضوا كيف تصل التربيعات المعيارية المتكررة إلى باقٍ صفري أو غير صفري.
إنشاء بيانات اختبار حتمية
أنشئوا قيماً وأعداد تكرار وبواقي ثابتة للتحقق من تنفيذ آخر.
الأسئلة الشائعة
ماذا يحدث إذا كان p مركباً؟
يعيد الطلب خطأ إدخال غير صالح لأن p يجب أن يكون أولياً.
هل يضمن الأس الأولي عدداً أولياً من أعداد ميرسين؟
لا، فهو شرط لازم لكنه غير كافٍ، والباقي النهائي هو الذي يحسم القرار.
لماذا يعاد العدد والباقي كسلسلتين؟
قد يتجاوزان مجال الأعداد الصحيحة الدقيقة في JSON، وتحفظ السلاسل جميع الأرقام.
هل الاختبار احتمالي؟
لا، فاختبار لوكاس-ليمر حتمي لأعداد ميرسين ذات الأسس الأولية.
ما تكلفة الفحص عبر API؟
يكلف كل طلب $0.002. وتستخدم نسخة المتصفح الحساب النقي نفسه.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/numth/mersenne-prime-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"p":31}'const res = await fetch("https://api.kit.forhosting.com/numth/mersenne-prime-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"p": 31
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/mersenne-prime-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"p": 31
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/mersenne-prime-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"p":31}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"p":31}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/mersenne-prime-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"p": 31
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.mersenne_prime_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
min_p | 2 |
max_p | 10000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |