بخشی از مجموعه

چندین نمونه کد

~3 دقیقه مطالعه • بروزرسانی ۲۹ شهریور ۱۴۰۴

شرح برنامه

بر اساس حدس گلدباخ، هر عدد زوج بزرگ‌تر از ۶ برابر است با مجموع دو عدد اول کوچکتر از خودش.
در این برنامه پایتونی:
- چند عدد زوج بزرگ‌تر از ۶ از کاربر دریافت می‌شود
- برای هر عدد، دو عدد اول پیدا می‌شود که مجموعشان برابر با آن عدد باشد
- برنامه تا زمانی که کاربر بخواهد ادامه می‌یابد


وظایف برنامه:

  • prim(n): تمام اعداد اول کوچکتر از n را در یک آرایه قرار می‌دهد
  • find_two_numbers(n, primes): دو عدد اول از لیست primes پیدا می‌کند که مجموعشان برابر با n باشد

کد پایتون:


def prim(n):
    primes = []
    for num in range(2, n):
        for i in range(2, int(num ** 0.5) + 1):
            if num % i == 0:
                break
        else:
            primes.append(num)
    return primes

def find_two_numbers(n, primes):
    for i in primes:
        if (n - i) in primes:
            return i, n - i
    return None, None

# اجرای برنامه
while True:
    num = int(input("عدد زوج بزرگ‌تر از ۶ را وارد کنید (برای خروج 0): "))
    if num == 0:
        print("خروج از برنامه.")
        break
    if num <= 6 or num % 2 != 0:
        print("عدد وارد شده باید زوج و بزرگ‌تر از ۶ باشد.")
        continue

    primes = prim(num)
    a, b = find_two_numbers(num, primes)
    if a and b:
        print(f"{num} = {a} + {b}")
    else:
        print("هیچ جفت عدد اولی برای این عدد پیدا نشد.")

نمونه خروجی:


عدد زوج بزرگ‌تر از ۶ را وارد کنید (برای خروج 0): 30  
30 = 7 + 23  

عدد زوج بزرگ‌تر از ۶ را وارد کنید (برای خروج 0): 42  
42 = 5 + 37  

عدد زوج بزرگ‌تر از ۶ را وارد کنید (برای خروج 0): 0  
خروج از برنامه.

توضیح مراحل:

- تابع prim(n) با بررسی تقسیم‌پذیری، تمام اعداد اول کوچکتر از n را پیدا می‌کند
- تابع find_two_numbers(n, primes) با پیمایش لیست اعداد اول، دو عددی را پیدا می‌کند که مجموعشان برابر با n باشد
- برنامه در یک حلقه اجرا می‌شود تا زمانی که کاربر عدد ۰ وارد کند


نوشته و پژوهش شده توسط دکتر شاهین صیامی