alibadparva0

تمرین برنامه‌نویسی: مقسوم‌علیه اول لطفا کمک کنید

alibadparva0 ۱۳۹۹/۰۵/۱۵ مباحث عمومی برنامه‌نویسی

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

ورودی نمونه:

123
43
54
12
76
84
98
678
543
231
خروجی نمونه:

678 3

پاسخ‌ها به این تاپیک
محمد حسین فریدونی
محمد حسین فریدونییک دولوپر بک اند علاقه‌مند به یادگیری
۱۳۹۹/۰۶/۰۱

سلام

وقت بخیر و خسته نباشی

برای اینکار ابتدا میتونی با تعریف یه تابع که مشخص میکنه عدد اول هست یا نه شروع کنی.

مثلا من به صورت زیر تعریفش کردم:

def is_prime(number):
 if number < 2:
 return False

 if number == 2:
 return True

 if number % 2 == 0:
 return False

 for i in range(3, int(number**0.5), 2):
 if number % i == 0:
 return False
 
 return True

در مرحله بعد میتونیم یه تابع تعریف کنیم که مقسوم علیه های اول یه عدد رو بهمون در قالب یه لیست بده. برای این قسمت میشه از کد زیر استفاده کرد:

def calculate_prime_divisors(number):
 primes = []

 for i in range(2, number+1):
 if ((is_prime(i)) and (number % i == 0)):
 primes.append(i)
 
 return primes

حالا ما همه ی موارد مورد نیاز رو داریم تا سوال رو جواب بدیم. اعداد رو میگیریم و عدد و تعداد مقسوم علیه های اولش رو در قالب کلید و مقدار در یه دیکشنری ذخیره میکنیم. در آخر بیشترین تعداد مقسوم علیه رو پیدا می‌کنیم و اعدادی که این تعداد مقسوم علیه اول دارن رو جدا می‌کنیم. حالا این اعداد رو مرتب می‌کنیم و بزرگ ترینش رو نمایش می‌دیم ( اگر فقط یک عدد به تنهایی بیشترین تعداد مقسوم‌علیه اول رو داشته باشه هم مرتب کردن روش تاثیر نمیذاره و به درستی اون عدد نمایش داده می‌شه). کد زیر این کار رو برای ما انجام میده:

# 123 43 54 12 76 84 98 678 543 231
numbers = {}
for i in range(10):
 n = int(input())
 numbers[n] = len(calculate_prime_divisors(n))

# find maximum number of prime divisors
max_value = max(numbers.values())
# find numbers with max_value number of prime divisors
max_keys = [k for k, v in numbers.items() if v == max_value]

print(max_value, sorted(max_keys)[-1])

موفق باشید

محمد حسین فریدونی
محمد حسین فریدونییک دولوپر بک اند علاقه‌مند به یادگیری
۱۳۹۹/۰۶/۰۱

متاسفانه فرمت کد توی سطح دوم indentation به هم میریزه. به این موضوع برای استفاده از کد دقت کنید.

در پاسخ به