Треки
/
Zig
Zig
/
Вправи
/
Досконалі числа
Досконалі числа

Досконалі числа

Легка

Вказівки

Визначте, чи є число досконалим, надлишковим або недостатнім, за схемою класифікації Нікомаха (60 - 120 рр. н. е.) для додатних цілих чисел.

Грецький математик Нікомах розробив схему класифікації додатних цілих чисел, за якою кожне з них належить рівно до однієї з категорій: досконале, надлишкове або недостатнє, залежно від суми власних дільників. Суму власних дільників визначають як суму всіх дільників числа, крім самого числа. Наприклад, сума власних дільників числа 15 дорівнює 1 + 3 + 5 = 9.

Досконале

Число є досконалим, коли воно дорівнює сумі своїх власних дільників. Наприклад:

  • 6 є досконалим числом, бо 1 + 2 + 3 = 6
  • 28 є досконалим числом, бо 1 + 2 + 4 + 7 + 14 = 28

Надлишкове

Число є надлишковим, коли воно менше за суму своїх власних дільників. Наприклад:

  • 12 є надлишковим числом, бо 1 + 2 + 3 + 4 + 6 = 16
  • 24 є надлишковим числом, бо 1 + 2 + 3 + 4 + 6 + 8 + 12 = 36

Недостатнє

Число є недостатнім, коли воно більше за суму своїх власних дільників. Наприклад:

  • 8 є недостатнім числом, бо 1 + 2 + 4 = 7
  • Прості числа є недостатніми

Завдання

Реалізуйте спосіб визначати, чи є задане число досконалим. Залежно від мовного треку, можливо, також потрібно реалізувати спосіб визначати, чи є задане число надлишковим або недостатнім.

Assert

У цій вправі уявімо, що за виклик classify лише з ненульовим вхідним значенням відповідає той, хто викликає. Тож зробіть так, щоб функція classify за допомогою assert перевіряла, що її вхідні дані ненульові. Щоб дізнатися більше, дивіться довідник мови Zig та реалізацію std.debug.assert.

Однак зауважмо, що ця вправа наразі не перевіряє вхідне значення 0 (бо std.testing ще не підтримує очікування паніки).

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Zig Exercism

Час розпочати Досконалі числа?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Zig, а також 104 вправи та справжнє наставництво від людей, і все це безкоштовно.