Совершенные числа
Число совершенно, если оно равно сумме всех своих делителей, кроме самого себя. Пример: 6 = 1 + 2 + 3. Найдите все совершенные числа от 1 до 10000 и выведите их на экран.
Подсказка: необходимо найти все делители от 1 до тестируемого числа. Делителем числа называется число, которое делит данное без остатка ( a mod b = 0 ).
Алгоритм решения задачи:
- Каждое число от 1 до 1000 поочередно делить на все целые числа от 1 до этого числа. На самом деле достаточно до половины заданного числа.
- Найти сумму всех делителей и сравнить с самим числом. Если сумма и число равны, то последнее является совершенным.
Программа на языке Паскаль:
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 редактор формул
- Универсальный калькулятор
- Числовой калькулятор
- Сфоткай и добавь свою задачу
- Решения задач из Сканави
- Характеристика студента онлайн
- Диаграммы и графики онлайн
- Конструктор программ на Паскале
- Самые популярные материалы
- Доска почета: лучшие пользователи
![]()
Анекдоты и фразы
"Настоящий программист когда расписывает ручку пишет "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. Поиск совершенных чисел в заданном с клавиатуры интервале.
for num:=x1 to x2 do
-
begin
sum:=1;
for i:=2 to (num-1) do
-
if num mod i=0 then sum:=sum+i;

Наверх
Блок-схема
3. Из 10 случайных чисел в интервале [1, 10] найти количество совершенных.
Пояснение: фактически надо найти количество шестерок.
Ответ может быть таким: 6 6 6 kch=3
-
for n:=1 to 10 do
begin
-
ch:=random (10-1+1)+1;
sum:=0;
for i:=1 to ch-1 do
-
if ch mod i=0 then sum :=sum+i;
-
begin write(ch:5); inc(kch) end;

Наверх
Блок-схема
4. Дано натуральное число N. Определить, является ли оно совершенным.
-
Sum:=0;
for i:=1 to n div 2 do
-
if n mod I=0 then sum:=sum+i;

Наверх
Блок-схема
5. Вычислить ch/8+4, где ch - четвертое совершенное число.
-
koldel - количество делителей;
del - делители;
Sd - сумма делителей;
k - количество чисел;>
-
begin inc(ch);
Sd:=0 ;
for del:=1 to ch-1 do
-
if ch mod del=0 then Sd:=Sd + del;

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