Предмет: Информатика, автор: HNLLZ

помогите, пожалуйста, очень нужно! Паскаль. Совершенным называется число, равное сумме всех своих делителей, меньших его самого (например, число 6=1+2+3). Напишите программу, которая вводит натуральное число N и определяет, является ли число N совершенным.

Входные данные
Входная строка содержит натуральное число N .

Выходные данные
Если число N – совершенное, программа должна вывести в одну строчку через пробел все делители этого числа, меньшие N . Если число несовершенное, программа должна вывести 0.


Аноним: Вы забыли указать ограничение на N, а это важно
HNLLZ: в дано этого нет
Аноним: Вы должны понимать, что нам нет дело до каких-то Ваших "дано", Вы даете задание не по алгебре, где число может быть любым, а по информатике, где представление чисел ограничено. И в языках программирования много разных типов данных как раз для того, чтобы выбрать их них подходящий у задаче. Так что определяйтесь.
HNLLZ: в учебнике нет ограничения, значит, тип данных любой)
HNLLZ: integer, я думаю
Аноним: integer в языках программирования имеет максимальное значение 2147483647. Смотрим в Интернет и видим, что в диапазоне от 1 до 2147483647 имеются только числа 6, 28, 496, 8128 и 33 550 336. Проще их забить в программе константами и введенное число число сравнивать с ними. Быстро и эффективно)))
HNLLZ: да, быстро, но в задании ведь нужно их найти(а не вводить константами)... Сможете, пожалуйста, написать эту программу с типом integer?
Аноним: Нет, их не нужно найти. Сказано "определяет, является ли число N совершенным." А как именно определяет, хоть языком лижет - про то не сказано.

Ответы

Автор ответа: Аноним
0

PascalABC.NET 3.4.2, сборка 1881 от 19.11.2018

Внимание! Если программа не работает, обновите версию!

function СовершенноеЧисло(n: integer): boolean;

begin

 var (s,d,n2) := (1,2,n div 2);

 while d <= n2 do

 begin

   if n mod d = 0 then s += d;

   Inc(d)

 end;

 Result := n = s

end;


begin

 if СовершенноеЧисло(ReadInteger) then Print('Совершенное')

 else Print('Несовершенное')

end.

Пример

33550336

Совершенное


HNLLZ: "Если число N – совершенное, программа должна вывести в одну строчку через пробел все делители этого числа, меньшие N." и где у Вас вывод делителей?)
Аноним: Не заметил. Прочитал только это: "Напишите программу, которая вводит натуральное число N и определяет, является ли число N совершенным." Модератор увидит, даст ответ на исправление, допишу, это легко. А сейчас не могу. Ответ можно править не позднее двух часов после того, как он дан.
Аноним: Ну или если срочно, сделайте вопрос за минимум баллов, сколько там, 2 надо дать что ли... я там дам новый ответ
HNLLZ: Нет, спасибо, у меня ведь все равно не работают Ваши программы..
Аноним: Ну, как знаете)
Аноним: В следующие раз указывайте диалект языка
Похожие вопросы
Предмет: Другие предметы, автор: daramihajlova264
Предмет: Математика, автор: Аноним
Предмет: Математика, автор: фредди7