في تطوير .NET، في بعض الأحيان بسبب المحتوى المعرفي لبعض المواضيع الهامشية، مثل الإحصاء والتمويل وعلم الفلك والحسابات الأخرى، ستتضمن خوارزميات التشفير وفك التشفير عددًا كبيرًا من العمليات، حتى لو تم تخزين أكبر نوع رقمي في .net Number، إحدى أفكاري هي استخدام الأنواع الرقمية عند الحساب، وتخزينها (مؤقتًا) وإخراجها كسلاسل. ثم عند التخزين، هناك حاجة إلى مصفوفات BOX[n] n لتخزين نتائج خطوة صغيرة مؤقتًا حساب.
'على سبيل المثال
==================== GRAYSM DOUND DIAGRAM =========================
'97*97*97*97*97 = 8587340257 صندوق(1) = 587340257 صندوق(2)=8
'97*97*97*97*97*97 = 832972004929 صندوق(1) = 972004929 صندوق(2)=832
'97*97*97*97*97*97*97 = 80798284478113 صندوق(1) = 284478113 صندوق(2)=80798
'97*97*97*97*97*97*97*97 = 7837433594376961 صندوق(1) = 594376961 صندوق(2)=7837433
'97^ 9 = 760231058654565217 صندوق(1) = 654565217 صندوق(2)=760231058
'97^ 10 = 73742412689492826049 صندوق(1) = 492826049 صندوق(2)=742412689 صندوق(3)=73
… … … … … …
لاحظ أنه كلما كان المربع في الجدول أدناه أكبر، كلما كان الرقم المقابل أعلى. عند استخدام الخوارزمية المذكورة أعلاه، تذكر①أولاً تحديد عدد أرقام BOX، على سبيل المثال، ما ورد أعلاه هو 9 أرقام (حسب الاحتياجات والفعلية). شروط)،
②نظرًا لعادات الحساب، سيقوم العديد من الأشخاص أولاً بحساب عدد أرقام المربع (n+1) عند العد من الموضع السفلي {box(0 -> n)}، ثم إضافة رقم الحمل الناتج عن المربع (n) (مثل كأول مربع احسب (1) إلى مربع (2) = 0 لإنشاء رقم حمل 8 مربع (2) + رقم حمل = 8) للمعالجة، مثل معالجة الإضافة أعلاه ③ من الأفضل أن تبدأ من الأعلى ستوفر الكثير من المتاعب، ولا يهم عدد المربعات، استخدم مصفوفة ديناميكية عندما تكون ممتلئة (عدد مرات النقل التي تم إنشاؤها بواسطة أعلى مربع). هناك عملية modulo، إذا لم يكن المعامل كبيرًا، فيمكنك أيضًا استخدام الفكرة المذكورة أعلاه لحساب المعامل على شكل قطع ثم ربط المربع كنتيجة مؤقتة، وإعادة توزيع المربع (يجب إعادة اقتطاعه من على سبيل المثال، إذا كان modulo 123456789123456789، قم بتعيين مربع مكون من ثمانية أرقام box(1)=89 box(2)=91234567 box(3)=12345678 هو 123456789123456789 ÷ 333=370741108478849 المعامل هو 72) ثم يجب أن يكون الصندوق المعاد توزيعه هو box(1) =478849 box(2) =370741180 لكن ليس box(1) =370741180 box(2) = 478849 لماذا؟ أولوس من الموضع العالي إذا لم يتغير box(n) بعد أن كان modulo مرة واحدة، فإن نتيجة أخذ المعامل مرة أخرى لا تتغير والنتيجة هي box(n) = box(n).
هناك موقف آخر يتضمن عمليات بأعداد كبيرة وهو رفع معامل A إلى القوة n (A ^n mod V إذا لم يكن رقم التعديل كبيرًا، فيمكن القيام بذلك (ينتهي بعد n A mod) ((A mod V)* A mod V) * A mod V... لا يلزم بالضرورة تنفيذ هذه الخوارزمية بشكل متكرر، حيث يمكن استخدام حلقة بسيطة، مع ما يصل إلى مستويين من الحلقات المتداخلة.
النصيحة النهائية: عند جمع أو طرح أو ضرب أو قسمة عدد كبير، لا تقم بتحليل المقسوم بسهولة (الجمع/الطرح/الضرب/القسمة). ستكون هذه الخوارزمية غير فعالة للغاية.
(تم كتابة المقال على عجل، قد يكون هناك أخطاء إملائية، أرجو أن تسامحوني)
المصدر: نفس المدونة