الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تمرين بسيط2(تحليل عدد لجداء عوامل أولية)

بدأه kenham في 29 مايو 2014 · 10 رد · 3,328 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

يتجلى تحليل عدد لجداء عوامل أولية في كتابة العدد على شكل جداء عوامل أولية

 

مثلا العدد 12

12=2*2*4

المطلوب صنع برنامج لتحليل عدد مدخل إلى جداء عوامل أولية

 

كمثال حي أرفقت برنامج من صنعي لفهم الموضوع أكثر

 

البرنامج مبرمج بالباسكال

elementp.rar

2
#2
تفضل حل بسيط 

تركته عمدا بسيط حتى لا تخلط الامور على الاعضاء الاخرين

 


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)

في انتظار مشاركة الاعضاء الاخرين ثم اكتبه في عدد اقل من الاسطر


1
#3

جيد لكن أنت بالتأكيد لم تحمل البرنامج الذي رفعته

 

أنا قلت الخرج يكون على هذا الشكل:

124=2*2*31

أما برنامجك فيعطي الخرج على الشكل

[2, 2, 31]

أنت لم تلتزم بنص التمرين لذا أعتبر حلك خاطئ لأنه لا يعطي النتائج المطلوبة

#4

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)

لم ارى التطبيق الذي قمت بارفاقه لاني استخدم لينكس 

تم اصلاح الخرج الان
1
#5

الأن تبقى مشكلة شاكنا و كلانا أخطأ عندها

 

و هي العدد واحد

 

فما هو تحليل جداء عوامل الأولية للواحد

 

برنامج يطبع 2 و هو خاطئ طبعا

 

أما برنامجك فلا يطبع شيئا

 

فما هو الحل يا ترى هل هو الواحد أم أنه لا يقبل جداء عوامل أولية

 

و كذلك الحال بالنسبة للصفر

#6
هذه المشكلة رياضية وليست برمجية

يمكننا معالجتها كحالة خاصة 

انا تركت البرنامج هكذا لانك لم تبين كيف يجب التعامل معها في سوألك

#7

أعرف أنه مشكلة رياضية

 

و الرياضيات من أساسيات البرمجة

 

لكن ما هو حل هذا المشكل الرياضى

#8

لقد قرأت عن مشكلة الواحد و الصفر

 

و وجدت بأنهما عددان غير قابلان للتحليل

 

أي الخرج يكون '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)

الآن بقي إختصاره فل يكن هذا تحديا بيننا و بين كافة الأعضاء

 

من يكتبه في أقل عدد من الأسطر

#9

إذا كان فقط إختصار عدد الأسطر وليس الكود
فما رأيكم في طريقتي :)

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
#10

إختصار جيد لكن

 

أنا قلت عندما يكون الدخل 1 أو 0 فإن الخرج يكون   Number of non-analysis of the initial product of factors

 

لكن False

 

لا بأس بها أيضا

#11
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')

        ....

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…