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