يتجلى تحليل عدد لجداء عوامل أولية في كتابة العدد على شكل جداء عوامل أولية
مثلا العدد 12
12=2*2*4
المطلوب صنع برنامج لتحليل عدد مدخل إلى جداء عوامل أولية
كمثال حي أرفقت برنامج من صنعي لفهم الموضوع أكثر
البرنامج مبرمج بالباسكال
يتجلى تحليل عدد لجداء عوامل أولية في كتابة العدد على شكل جداء عوامل أولية
مثلا العدد 12
12=2*2*4
المطلوب صنع برنامج لتحليل عدد مدخل إلى جداء عوامل أولية
كمثال حي أرفقت برنامج من صنعي لفهم الموضوع أكثر
البرنامج مبرمج بالباسكال
def primefactors(x):
li=[]
loop=2
while loop<=x:
if x%loop==0:
x = x /loop
li.append(loop)
else:
loop+=1
return li
print primefactors(124)في انتظار مشاركة الاعضاء الاخرين ثم اكتبه في عدد اقل من الاسطر
جيد لكن أنت بالتأكيد لم تحمل البرنامج الذي رفعته
أنا قلت الخرج يكون على هذا الشكل:
124=2*2*31
أما برنامجك فيعطي الخرج على الشكل
[2, 2, 31]
أنت لم تلتزم بنص التمرين لذا أعتبر حلك خاطئ لأنه لا يعطي النتائج المطلوبة
def primefactors(x):
xx = x
li=[]
loop=2
while loop<=x:
if x%loop==0:
x = x /loop
li.append(loop)
else:
loop+=1
return str(xx) + '=' +'*'.join([ str(i) for i in li])
print primefactors(120)
الأن تبقى مشكلة شاكنا و كلانا أخطأ عندها
و هي العدد واحد
فما هو تحليل جداء عوامل الأولية للواحد
برنامج يطبع 2 و هو خاطئ طبعا
أما برنامجك فلا يطبع شيئا
فما هو الحل يا ترى هل هو الواحد أم أنه لا يقبل جداء عوامل أولية
و كذلك الحال بالنسبة للصفر
أعرف أنه مشكلة رياضية
و الرياضيات من أساسيات البرمجة
لكن ما هو حل هذا المشكل الرياضى
لقد قرأت عن مشكلة الواحد و الصفر
و وجدت بأنهما عددان غير قابلان للتحليل
أي الخرج يكون 'Number of non-analysis of the initial product of factors'
لذا سأعدل في الكود الخاص بك
def primefactors(x):
if x==1 or 0:
return 'Number of non-analysis of the initial product of factors'
xx = x
li=[]
loop=2
while loop<=x:
if x%loop==0:
x = x /loop
li.append(loop)
else:
loop+=1
return str(xx) + '=' +'*'.join([ str(i) for i in li])
print primefactors(1)الآن بقي إختصاره فل يكن هذا تحديا بيننا و بين كافة الأعضاء
من يكتبه في أقل عدد من الأسطر
إذا كان فقط إختصار عدد الأسطر وليس الكود
فما رأيكم في طريقتي :)
def primeFactors(n):
i, f, x = 2, [], n
while i * i <= n:
if n % i: i += 1
else: n //= i; f.append(i)
if n > 1: f.append(n); return str(x) + ' = ' + ' * '.join([str(i) for i in f])
return False
print(primeFactors(12))إختصار جيد لكن
أنا قلت عندما يكون الدخل 1 أو 0 فإن الخرج يكون Number of non-analysis of the initial product of factors
لكن False
لا بأس بها أيضا
kenham كتب:إختصار جيد لكن
أنا قلت عندما يكون الدخل 1 أو 0 فإن الخرج يكون Number of non-analysis of the initial product of factors
لكن False
لا بأس بها أيضا
انا صراحة غير متأكد من التحليل في الرياضيات اظن فقط الأرقام الصيحية الموجبة الأكبر من واحد هي الذي تتحلل لعواملها الأولية
اذا كان كلامي صح فإستثناء واحد وصفر غير صحيحة، لو أدخل المستخدم 3- اكيد تكون النتيجة خاطئة
اما بالنسبة لخرج الدالة انا افضل يكون التشييك خارج الدالة
مثال
if not primeFactors(1):
print('Number of non-analysis of the initial product of factors')
....المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…