عاملي
في الرياضيات، المضروب أوالعاملي لعدد سليم طبيعي n ، والذي يخط n!، والذي يقرأ "عاملي n"، هوجذاء الأعداد السليمة الموجبة بترا والأصغر أوتساوي n. ويخط :
أمثلة :
- 1! = 1
- 2! = 1 x 2 = 2
- 3! = 1 x 2 x ثلاثة = 6
- 10! = 1 x 2 x ثلاثة x أربعة xخمسة xستة xسبعة xثمانية xتسعة xعشرة = 3628800
وتعريف العاملي على شكل جذاء يترتب عنه كون 0! = 1 ذلك حتى 0! جذاء مفرغ، وبمعنى آخر مقتصر على العنصر المحايد في عملية الضرب.
ويلعب العاملي دورا أساسيا في فهم الإحتمالات والتراتيب بما أنه يوجد n! طريقة مختلفة لتوزيع n شيئا. ويظهر العاملي في عدة معادلات رياضية، مثل سيغة الثنائي لنيوتن وصيغة تايلور.
وتعطينا صيغة ستيرلينع مساويا لـ n! عندما تكون n كبيرة :
عاملي عدد غير سليم
لكل عدد سليم n، لدينا حيث Γ هي دالة أولير (دالة غاما) وxcxzczxccعها ليونارد أولير. وتمكننا دالة أولير من تعميم العاملي على مجموعة الأعداد المركّبة باستثناء الأعداد السالبة بترا. وفي النهاية نجد :
البرمجة
يمكن حساب عاملي عدد ما باستعمال خوارزميات الرجوع. فلنخط باستعمال لغة Scheme، القريبة من لغة Lisp، برنامجا رجعيّا يعطينا عاملي عدد سليم :
(define fact (lambda (x) (if (= x 0) 1 (* x (fact (- x 1))))))
وهذا البرنامج السابق غير مفيد في حالة الاعداد الكبيرة.
وبنفس الطريقة في Caml :
let rec fact n = match n with | 0 -> 1 | _ -> n * fact(n-1) ;;
وبطريقة أخرى:
let fact n = let rec aux n r = match n with | 0 -> r | _ -> aux (n-1) (n*r) in aux n 1 ;;
وفي لغة سي:
int factorielle_recursive(int n) { if (n == 0) return 1; else return n * factorielle_recursive(n-1);
وبطريقة أخرى:
int factorielle_iterative(int n) { int res; for (res = 1; n > 1; n--) res *= n; return res;
وفي لغة Python:
fact = lambda x : x>0 and x*fact(x-1) or 1 ---------------------------------------------------- الاستعمال : for i in range(10): print "fact %d = %d" %(i, fact(i)) ويظهر على الشاشة : fact 0 = 1 fact 1 = 1 fact 2 = 2 fact ثلاثة = 6 fact أربعة = 24 factخمسة = 120 factستة = 720 factسبعة = 5040 factثمانية = 40320 factتسعة = 362880
هذه الدوال (البرامج) لا تمكننا من حساب عملي أعداد أكبر من 12 إذا كانت الاعداد السليمة محدودة بـ 32 بت، لأن النتيجة تتعدى المساحة المتوفرة.