Завдання № 21. Перевірити, чи є два натуральних числа дружніми » Pascal - основи програмування

Основи програмування на мові Pascal

 

Спонсори

Завдання № 21. Перевірити, чи є два натуральних числа дружніми

Завдання № 21. Перевірити, чи є два натуральних числа дружніми
Формулювання. Дано два натуральних числа. Перевірити, чи є вони дружні-ми.
Примітка: дружніми числами називаються два різних натуральних числа, для яких сума всіх власних дільників першого числа дорівнює другому числу і сума всіх власних дільників другого числа дорівнює першому числу.
Наприклад, 220 і 284 - пара дружніх чисел, тому що:
Сума власних дільників 220: 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284
Сума власних дільників 284: 1 + 2 + 4 + 71 + 142 = 220
Рішення. Це завдання нагадує задачу 19, так як в ній ми теж вважали суму влас-них дільників введеного числа, а потім порівнювали цю суму з самим числом, перевіряючи його на предмет совершенности. У даному ж випадку нам потрібно знайти не тільки суму власних де-літелей першого числа (позначимо число як n1, а суму його дільників sum1), але і другого числа (візьмемо позначення n2 і sum2 відповідно). Тоді відповіддю в задачі послужить порівняння: (n1 = sum2) and (n2 = sum1). До речі, тут вперше в нашому оповіданні ми використовуємо логи-етичні операції (нагадаємо, що логічне вираження X1 and X2 приймає значення істини тоді і тільки тоді, коли істинні булевские вираження X1 і X2, а в інших випадках воно приймає помилкове значення).
Однак запропоновану схему можна спростити. Покажемо це на прикладі: нехай дано числа 8 і 4. Вважаємо суму власних дільників числа 8: 1 + 2 + 4 = 7. Це число відмінно від 4, по-цьому пара вже не відповідає визначенню дружніх чисел. Можна відразу вивести отри-цательних відповідь, уникнувши підрахунку суми дільників другого числа. Якщо були б дані числа 8 і 7, то необхідно було б обчислити суму власних дільників числа 7, вона дорівнює 1 (так як воно просте). Тепер необхідно порівняти суму власних дільників другого з першим числом: так як 1 відмінно від 8, цифри не дружні.
Покажемо на блок-схемі, як можна розгалужув програму (обчислення обох суму не изоб-ражается):

Завдання № 21. Перевірити, чи є два натуральних числа дружніми

Таким чином, без логічних операцій можна і обійтися.

 

Код:


  1. program AmicableTest;
  2. var
  3. i, n1, n2, sum1, sum2: word;
  4. begin
  5. readln(n1, n2);
  6. for i := 1 to n1 div 2 do begin
  7. if n1 mod i = 0 then sum1 := sum1 + i
  8. end;
  9. if sum1 = n2 then begin
  10. for i := 1 to n2 div 2 do begin
  11.   if n2 mod i = 0 then sum2 := sum2 + i
  12. end;
  13. writeln(sum2 = n1)
  14. end
  15. else begin
  16. writeln('False')
  17. end
  18. end.

0021.-AmicableTest.rar [714 b] (cкачувань: 4)

скачать dle 10.4фильмы бесплатно Наступна сторінка » Завдання № 22. Знайти найбільший спіль... Попередня сторінка » Завдання № 20. Перевірити, чи є задане н...