🎉 تهانينا! 🎉
لقد حللت المهمة ببراعة! كان صعبًا لكنك وجدت الحل الصحيح. أنت خطوة أقرب إلى الاحتراف! استمر، كل مرحلة تجعلك أقوى.
ProgerLib Python للجميع
تغيير السمة
تسعى جاهدًا للانضمام إلى "جماعة الفيثاغوريين الرقميين" السرية. تعتقد هذه الجماعة القديمة أن الأرقام تتحكم في الكون، وأن الأرقام "المثالية" الخاصة تحمل مفتاح انسجام العالم. لإثبات قيمتك، يجب عليك اجتياز "اختبار الكمال".
يستقبل البرنامج سلسلة من الأعداد الطبيعية كمدخلات، كل منها في سطر جديد. ينتهي الإدخال بالرقم 0. لكل رقم يتم إدخاله (باستثناء 0)، يجب تحديد ما إذا كان مثاليًا.
ملاحظة: العدد المثالي — هو عدد طبيعي يساوي مجموع جميع قواسمه الذاتية (أي جميع القواسم الموجبة المختلفة عن العدد نفسه). على سبيل المثال، بالنسبة للعدد 6، القواسم الذاتية هي 1 و 2 و 3. مجموعها هو 1 + 2 + 3 = 6، مما يعني أن 6 — عدد مثالي.
يتم إدخال البيانات إلى البرنامج، كل إدخال في سطر جديد. الرقم الأخير في التسلسل هو دائمًا 0. هذا الرقم — علامة على نهاية الإدخال، وليس من الضروري معالجته.
لكل رقم من تسلسل الإدخال (باستثناء 0)، يجب على البرنامج إخراج الكلمة "yes" في سطر منفصل، إذا كان الرقم مكتملاً، و "no" إذا لم يكن كذلك.
6
28
12
1
0
نعم
نعم
لا
لا
def is_perfect(n):
"""
Проверяет, является ли число n совершенным.
"""
# Совершенные числа по определению больше 1.
if n <= 1:
return False
# Начинаем сумму с 1, так как 1 - делитель любого числа.
sum_of_divisors = 1
# Ищем делители до квадратного корня из n.
# Это эффективный способ, так как делители ходят парами.
# Например, для 28: (2, 14), (4, 7).
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
sum_of_divisors += i
# Добавляем парный делитель, если он не равен самому корню
if i * i != n:
sum_of_divisors += n // i
# Сравниваем сумму делителей с исходным числом.
return sum_of_divisors == n
# Основной цикл программы
while True:
try:
number = int(input())
# Если ввели 0, завершаем программу.
if number == 0:
break
if is_perfect(number):
print("YES")
else:
print("NO")
except (ValueError, EOFError):
# Обработка некорректного ввода или конца файла
break
🎉 تهانينا! 🎉
لقد حللت المهمة ببراعة! كان صعبًا لكنك وجدت الحل الصحيح. أنت خطوة أقرب إلى الاحتراف! استمر، كل مرحلة تجعلك أقوى.
AD
إعلان
جارٍ تشغيل الكود...