سلسلة حل المشكلات (Problem Sloving) اليوم الاول

التحدي رقم 1 لليوم رقم 1 من رمضان

اولا
كل عام و انتم بخير و اعاده الله عليكم بالمن و بالخير و البركه
لا تنشغل بالحل كثيرا كي لا تهمل عباداتك الاصليه
و لا تنسي تجديد نيتك فأن طلب العلم عباده
لا تنسوني و اخي المعتقل سياسيا من جميل دعائكم

وصف التحدي :

**مستوي التحدي : **
متوسط رياضيا
سهل برمجيا

قم بكتابة الدالة function تستقبل عددين، كلاهما عدد صحيح، ثم تقوم الدالة بإرجاع مصفوفة تحتوي على جميع الأرقام الأولية بين هذين الرقمين.

ملحوظه : كلمة مصفوفة يعني ليست [,]
ملحوظه : الاعداد الاوليه هي الاعداد التي لا تقبل القسمه الا علي نفسها او علي ال 1
(2,3,5,7…)

أضغط لرؤية المخرجات المتوقعة عشان تتيست الكود بتاعك

الاختبار 1
المدخلات (Inputs)
a = 1
b = 10
المخرجات (Outputs)
[2,3,5,7]

الاختبار 2
المدخلات (Inputs)
a = 20
b = 50
المخرجات (Outputs)
[23,29,31,37,41,43,47]

الاختبار 3
المدخلات (Inputs)
a = 90
b = 100
المخرجات (Outputs)
[97]

الاختبار 4
المدخلات (Inputs)
a = 53
b = 67
المخرجات (Outputs)
[53,59,61,67]

حل التحدي
def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

def prime_numbers(a, b):
    if a > b:
        a, b = b, a  # التأكد ان ال a دايما هو الاصغر
    primes = []
    for num in range(a, b + 1):
        if is_prime(num):
            primes.append(num)
    return primes


حل اخر للتحدي
import math
def getPrimesBetween(a, b):
    primes = []
    for i in range(max(2, a), b + 1):  # نبدأ من 2 أو من a إذا كان أكبر من 2
        is_prime = True
        for n in range(2, int(math.sqrt(i)) + 1):  # التحقق حتى الجذر التربيعي للعدد
            if i % n == 0:
                is_prime = False
                break
        if is_prime:
            primes.append(i)
    return primes

إعجاب واحد (1)

وانت بخير وبسلامه، أنت وأخيك :heart:
يارب أخوك يطلع من السجن قريباً بسلامه وعافيه :sparkling_heart:


حل التحدي :

هذه هى الداله :

def prime_numbers_between (num1, num2) : return [x for x in range (num1, num2 + 1) if x == 2 or x > 2 and not any (x % i == 0 for i in range (int (x**0.5) + 1, 1, -1))] 

وهكذا تستطيع تجربتها :

print (prime_numbers_between (1, 100)) # الناتج : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
إعجاب واحد (1)

في اي وحد سيشرح المستر مكتبة “math”

إعجاب واحد (1)

مش محتاجه شرح + تقدر تحله بدون متستخمها و هيبقي اسهل اصلا انا دماغي لفت لما كنت بحله زمان ثوان هضيف ف البوست الحل بدونها

إعجابَين (2)

امين يارب
عاش ما شاء الله

إعجاب واحد (1)

هو استخدم sqrt من math، هذه الداله بتجيب الجزر التربيعي للرقم. تقدر تجيب الجزر التربيعي بدون مكتبه math هكذا : لو عايز تجيب جزر 25 تقدر تكتب math.sqrt (25) او زى ما انا عملت 25 ** 0.5، يعني لو عايز الجزر لأي رقم اكتب (الرقم ** 0.5) في بايثون وبس كده.وللعلم (**) في بايثون يعنى الأس (^).

إعجاب واحد (1)

شـكـرا لك . . . . . :rose:

إعجاب واحد (1)