أصعب كود في لغة البرمجة
أصعب كود في لغة البرمجة
هل تساألتم عن أصعب كود في لغة البرمجة ؟
هذا الكود الذي بلغة برولوج، وهي لغة برمجة منطقية تستخدم لحل المشاكل المنطقية والرياضية. الكود يقوم بحساب العدد الأولي الأكبر، وهو العدد الذي لا يقبل القسمة إلا على نفسه وعلى الواحد، والذي لا يوجد أي عدد أولي أكبر منه. هذا العدد لم يتم اكتشافه بعد، ويعتقد البعض أنه لا يوجد. الكود يستخدم خوارزمية تسمى الاختبار الأساسي، وهي طريقة فعالة للتحقق من الأعداد الأولية.
هذا الكود يحتاج إلى وقت طويل جداً للتنفيذ، وربما لا ينتهي أبداً. لذلك، لا أنصحك بتجربته على جهازك. إليك الكود:
% تعريف العدد الأوليprime(N) :- N > 1, not(divisible(N, 2, N)).% تعريف القابلية للقسمةdivisible(N, D, M) :- D * D =< N, (N mod D =:= 0; M mod D =:= 0; divisible(N, D + 1, M)).% تعريف الاختبار الأساسيfermat_test(N, A) :- A > 1, A < N, powm(A, N - 1, N) =:= 1.% تعريف الأساس المرفوع للأسpowm(A, B, M) :- B =:= 0, !, 1 is A mod M.powm(A, B, M) :- B mod 2 =:= 0, !, B1 is B // 2, powm(A, B1, M), X is (A * A) mod M, powm(X, B1, M).powm(A, B, M) :- B1 is B - 1, powm(A, B1, M), X is (A * A) mod M, powm(X, B1, M).% تعريف العدد الأولي الأكبرlargest_prime(N) :- prime(N), not(fermat_test(N, 2)), not(larger_prime(N)).% تعريف العدد الأولي الأكبر من عدد معينlarger_prime(N) :- N1 is N + 1, prime(N1), not(fermat_test(N1, 2)).

تعليقات
إرسال تعليق