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

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

 

Спонсори

Завдання № 20. Перевірити, чи є задане натуральне число досконалим

Завдання № 20. Перевірити, чи є задане натуральне число досконалим
Формулювання. Дано натуральне число. Перевірити, чи є воно досконалим.
Примітка: досконалим числом називається натуральне число, що дорівнює сумі всіх своїх власних дільників (тобто натуральних дільників, відмінних від самого числа). Наприклад, 6 - досконале число, воно має три власних подільника: 1, 2, 3, і їх сума дорівнює 1 + 2 + 3 = 6.
Рішення. Це завдання нагадує задачу 16, в якій потрібно було знайти кількість всіх натуральних дільників заданого числа. Нагадаємо код її основної частини (назвемо його кодом 1):

count: = 0;
for i: = 1 to n do begin
  if n mod i = 0 then inc (count)
end;


    Як видно, в цьому циклі перевіряється подільність числа n на всі числа від 1 до n, причому при кожному виконанні умови подільності збільшується на 1 значення лічильника count за допомогою функції inc. Щоб переробити цей код під поточну задачу, потрібно замість інкрементація (уве-личения значення) змінної-лічильника додавати числові значення самих дільників до неко-торою змінної для зберігання суми (зазвичай її мнемонічно називають sum, що в пер. З англ. Означає «сума »). У зв'язку з цим оператор

  if n mod i = 0 then inc (count);


в коді 1 тепер вже буде виглядати так:

  if n mod i = 0 then sum: = sum + i;


    Крім того, щоб не враховувалося саме число n при підсумовуванні його подільників (насколь-ко ми пам'ятаємо, цей дільник не враховується в рамках визначення досконалого числа), цикл повинен тривати не до n, а до n - 1. Правда, якщо говорити точніше, то цикл варто було б проводити до n div 2 (також це обговорювалося в задачі 14), оскільки будь-яке число n не може мати великих дільників, інакше частка від ділення має бути неіснуючим натуральним число між 1 і 2.
   Єдине, що залишиться тепер зробити - це вивести відповідь, порівнявши число n із сумою його подільників sum як результат булевского вираження через writeln:

  writeln (n = sum);

 

Код:


  1. program PerfectNumbers;
  2. var
  3. i, n, count: word;
  4. begin
  5. readln(n);
  6. count := 0;
  7. for i := 1 to n div 2 do begin
  8.   if n mod i = 0 then sum := sum + i
  9. end;
  10. writeln(n = sum)
  11. end.

0020.-PerfectNumbers.rar [607 b] (cкачувань: 14)

скачать dle 10.4фильмы бесплатно Наступна сторінка » Завдання № 21. Перевірити, чи є два нату... Попередня сторінка » Завдання № 19. Вивести на екран перших n...