По определению совершенным числом называется то число, которое равно сумме своих делителей отличных от самого числа. значит,чтобы решить нам нужно найти сумму делителей числа и проверить равна ли она самому числу. 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.
denis302007
15.02.2023
Число считается совершенным, если оно равно сумме своих делителей, исключая себя самого. для проверки, является ли число 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('число не является совершенным') end end. тестовое решение: введите натуральное число: 33550336 число является совершенным введите натуральное число: 543252 число не является совершенным
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Поставить знаки и скобки между 6 6 6 6, что бы было равно 7?