Как найти совершенное число в паскале
Перейти к содержимому

Как найти совершенное число в паскале

  • автор:

Совершенные числа

Число совершенно, если оно равно сумме всех своих делителей, кроме самого себя. Пример: 6 = 1 + 2 + 3. Найдите все совершенные числа от 1 до 10000 и выведите их на экран.

Подсказка: необходимо найти все делители от 1 до тестируемого числа. Делителем числа называется число, которое делит данное без остатка ( a mod b = 0 ).

Алгоритм решения задачи:

  1. Каждое число от 1 до 1000 поочередно делить на все целые числа от 1 до этого числа. На самом деле достаточно до половины заданного числа.
  2. Найти сумму всех делителей и сравнить с самим числом. Если сумма и число равны, то последнее является совершенным.

Программа на языке Паскаль:

const N = 10000; var i, j, sum: integer; begin for i := 2 to N do begin sum := 0; for j := 1 to i div 2 do begin if i mod j = 0 then sum := sum + j; end; if sum = i then writeln(i, ' - perfect!'); end; end.

Результат выполнения программы:

6 - perfect! 28 - perfect! 496 - perfect! 8128 - perfect!

Как найти совершенное число в паскале

«Натуральное число называют совершенным, если оно равно сумме своих простых делителей, не считая его самого (например, 6=1+2+3 —соверешнное число*). Составьте алгоритм, проверяющий, является ли введённое число совершенным»
*задачка из довольно-таки старого учебника, в настоящее время 1 не считается простым числом.
Это задачка в целом.
Просьба у меня может не совсем обычная— я не прошу дать мне код программы, я прошу помочь мне разобраться.
Итак, если разбивать программу на этапы то их получится 3:
1) Раскладываем число на простые делители.
2) Суммируем простые делители.
3) Сравниваем получившуюся сумму и заданное число.
Натолкните меня, пожалуйста, на мысль—каким образом можно разложить число на простые делители? Для этого нам потребуется сначала сгенерировать простые числа в диапазоне [2..n], где n— заданное число.
Каким образом их можно сгенерировать? Если можно, не код программы, а мысль )

Регистрация: 13.10.2007
Сообщений: 2,740

1. Действительно, сначала нужно найти все простые чичла от 2 до n, хотя можно и чуть меньше, т.к. если мы например задали число 6 то сумма первых 6 простых чисел равна 29 (включая единицу). Решение этой задачи явидел пару раз на форуме и почти во всех учебниках.
2. В цикле типа

while sum

считаем сумму простых чисел по-порядку. Если в конце цикла sum=N, то ДА, если нет, то НЕТ.
Форумчанин
Регистрация: 11.11.2007
Сообщений: 136
в общем простое число у которого два делителя: единица и оно само!

for i:=1 to n do begin k:=0; for j:=1 to n do begin if i mod j=0 then k:=k+1; end; if k=2 then else end;

ICQ - 446037211
Форумчанин
Регистрация: 22.11.2007
Сообщений: 224

спасибо, разобрался.
Но есть 1 нюанс:
В википедии написано что совершенное число состоит из суммы своих делителей(не важно,простые они или нет). В задаче же указано, что делители должны быть простыми числами.
Я решил согласиться с википедией( кода меньше строчек на 10):

program soversh; var n,i,sum:longint; begin writeln('vvedite 4islo'); read(n); i:=1; while i
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нахождение суммы четных чисел в массиве Ci_novice Общие вопросы C/C++ 1 23.12.2007 12:11
задача:Паскаль и ряд чисел Фибоначчи SEREG@ Помощь студентам 20 16.12.2007 20:05
нахождение полных чисел Juhn Паскаль, Turbo Pascal, PascalABC.NET 6 09.12.2007 13:14
Нахождение подпапок. Паскаль NikLik Помощь студентам 0 25.11.2007 21:51
Нахождение чисел в таблице базы данных на Delphi!, Помогите пожалуй Рина БД в Delphi 0 13.03.2007 19:21

Как найти совершенное число в паскале

Новое в библиотеке

  • Проблемы изучения математики в 3 кла.
  • Проверить будет ли число простым - P.
  • Сумма цифр числа в Python
  • Пузырьковая сортировка в Python
  • Алгоритм Эвклида для НОД в Python
  • Все материалы библиотеки

Лучшее на сайте

  • Онлайн-решебник задач
  • MathPad -математический блокнот
  • LaTeX+MarkDown редактор формул
  • Универсальный калькулятор
  • Числовой калькулятор
  • Сфоткай и добавь свою задачу
  • Решения задач из Сканави
  • Характеристика студента онлайн
  • Диаграммы и графики онлайн
  • Конструктор программ на Паскале
  • Самые популярные материалы
  • Доска почета: лучшие пользователи

telegram

Анекдоты и фразы

"Настоящий программист когда расписывает ручку пишет "Hello w. "

Как найти совершенное число в паскале

"ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PASCAL"

Начало > Глава II. Простые , Совершенные > Задачи с решениями

ГЛАВА II

ЗАДАЧИ С РЕШЕНИЯМИ
Совершенные числа

1. Найти произведение совершенных чисел из 10 случайных, взятых в интервале[1, 10].

Переход
Блок-схема

2. Поиск совершенных чисел в заданном с клавиатуры интервале.

Переход
Блок-схема

3. Из 10 случайных чисел в интервале [1, 10] найти количество совершенных. Пояснение: фактически надо найти количество шестерок. Ответ может быть таким: 6 6 6 kch=3

Переход
Блок-схема

4. Дано натуральное число N. Определить, является ли оно совершенным.

Переход
Блок-схема

5. Вычислить ch/8+4, где ch - четвертое совершенное число.

Переход
Блок-схема

1. Найти произведение совершенных чисел из 10 случайных, взятых в интервале[1, 10].

Ответ может быть таким:
8 9 9 1 5 4 10 9 1 9
совершенных чисел нет

8 1 3 1 9 6 8 6 8 2
произведение совершенных чисел=36

    i - делители;
    p - произведение чисел;
    ch - число;
    sum - сумма делителей >
    begin
    ch:= random(10)+1; write(ch:5);
    sum :=0;
    For i:=1 to ch-1 do

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

    if p > 1 then writeln('произведение совершенных чисел=',p)
    else writeln('совершенных чисел нет')

    Наверх
    Блок-схема

    2. Поиск совершенных чисел в заданном с клавиатуры интервале.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *