• напишите программу, которая вводит натуральное число N и определяет является ли число N совершенным. Если можно с подробным или кратким объяснением

Ответы 3

  • Нет смысла делить на числа, большие половины делимого.
  • По определению совершенным числом называется то число, которое равно сумме своих делителей отличных от самого числа. Значит,чтобы решить задачу нам нужно найти сумму делителей числа и проверить равна ли она самому числу.var  sum, N, i:integer;begin  readln(N);//читаем число с клавиатуры //Проверяем делатели до N-1, т.к. нам нужны делители не равные //самому числу  for i:=1 to N-1 do    if N mod i = 0 then//Если i является делителем N, то...      sum:=sum+i;// ...прибавляем его к сумме делителей// Проверяем равна ли сумма делителей числа самому числу.  if sum = N then     writeln('Число совершенное')  else       writeln('Число не совершенное');end.
    • Автор:

      nonausul
    • 5 лет назад
    • 0
  • Число считается совершенным, если оно равно сумме своих делителей, исключая себя самого. Для проверки, является ли число N совершенным, полагаем будущую сумму делителей равной 1 (на единицу число всегда делится) и последовательно делим N на числа, начиная от 2 и заканчивая N/2.Если число делится без остатка на очередной делитель, добавляем его к сумме. После завершения цикла делений сравниваем сумму с N и в случае равенства объявляем число N совершенным. В начале алгоритма проверяем, чтобы N было больше 1, в противном случае сразу объявляем число не совершенным.var  i,n,s:longint;begin  Write('Введите натуральное число: '); Read(n);  if n=1 then Writeln('Число 1 не является совершенным')  else begin    s:=1;    for i:=2 to (n div 2) do      if (n mod i)=0 then s:=s+i;    if s=n then Writeln('Число является совершенным')    else Writeln('Число не является совершенным')  endend.Тестовое решение:Введите натуральное число: 33550336Число является совершеннымВведите натуральное число: 543252Число не является совершенным
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years