أصعب كود في لغة البرمجة

 أصعب كود في لغة البرمجة


هل تساألتم عن أصعب كود في لغة البرمجة ؟

هذا الكود الذي بلغة برولوج، وهي لغة برمجة منطقية تستخدم لحل المشاكل المنطقية والرياضية. الكود يقوم بحساب العدد الأولي الأكبر، وهو العدد الذي لا يقبل القسمة إلا على نفسه وعلى الواحد، والذي لا يوجد أي عدد أولي أكبر منه. هذا العدد لم يتم اكتشافه بعد، ويعتقد البعض أنه لا يوجد. الكود يستخدم خوارزمية تسمى الاختبار الأساسي، وهي طريقة فعالة للتحقق من الأعداد الأولية.

هذا الكود يحتاج إلى وقت طويل جداً للتنفيذ، وربما لا ينتهي أبداً. لذلك، لا أنصحك بتجربته على جهازك. إليك الكود:

% تعريف العدد الأولي
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)).


إن لغة البرمجة أساسيتها الرياضيات و ما أصعب شيء في رياضيات هو أصعب شيء في البرمجة

تعليقات

المشاركات الشائعة من هذه المدونة