Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
3 / 2 / 1
Регистрация: 06.01.2019
Сообщений: 32

Для заданного числа Н(1<Н<10000) написать программу, которая находит все совершенные числа, меньшие Н

13.01.2019, 10:56. Показов 7325. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Число называется совершенным,если сумма его делителей (кроме него самого) равна этому числи. Например, 6=1+2+3, т.е. 6 - совершенное число, 8>1+2+3+4, 8- совершенноею Для задонного числа Н(1<Н<10000) написать программу, которая находить все совешенные числа, меньшие Н.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.01.2019, 10:56
Ответы с готовыми решениями:

Составить программу, которая находит все совершенные числа в диапазоне от А до В.
Составить программу, которая находит все совершенные числа в диапазоне от А до В. Добавлено через 1 час 11 минут кто-нибудь...

Составьте программу, которая находит все совершенные числа в диапазоне от A до B
Составьте программу, которая находит все совершенные числа в диапазоне от A до B.

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

3
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
13.01.2019, 13:01
Лучший ответ Сообщение было отмечено axbor как решение

Решение

Цитата Сообщение от axbor Посмотреть сообщение
8>1+2+3+4, 8- совершенное
С чего это 3 делитель числа 8?
Посмотрите как "много" совершенных чисел до 10000
https://ru.wikipedia.org/wiki/... 0%BB%D0%BE

Добавлено через 2 минуты
И посмотрите похожие темы внизу страницы.
1
3 / 2 / 1
Регистрация: 06.01.2019
Сообщений: 32
13.01.2019, 14:15  [ТС]
прости 8 не совершенные 3 не делится
0
Модератор
10428 / 5716 / 3404
Регистрация: 17.08.2012
Сообщений: 17,382
19.01.2019, 10:22
Решение "в лоб", без интерфейса, простейший вариант:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var
  n, k, s, h: integer;
 
begin
  readln(h);
  for n := 2 to h do
    begin
      s := 1;
      for k := 2 to n div 2 do
        if n mod k = 0 then s := s + k;
      if s = n then write(n, ' ')
    end
end.
То же самое, но с каким-никаким интерфейсом:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var
  n, k, s, h: integer;
  found: boolean;
 
begin
  found := false;
  write('Поиск совершенных чисел. До какого числа искать? ');
  readln(h);
  for n := 2 to h do
    begin
      s := 1;
      for k := 2 to n div 2 do
        if n mod k = 0 then s := s + k;
      if s = n
        then begin
          write(n, ' ');
          found := true
        end
    end;
  writeln;
  writeln('Поиск окончен');
  if not found then write('Совершенных чисел до числа ', h, ' нет')
end.
Программа позволяет найти все совершенные числа вплоть до H=231-1=2147483647, однако при больших H считать будет слишком долго.

Попробуем ускорить. Кандуит: Википедия - Совершенное число.
Будем проверять не все числа, а только числа вида 2p-1(2p-1) для p = 1, 2, 3, ...

Программа с интерфейсом и контролем переполнения:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var
  n, k, s, h: integer;
  found: boolean;
 
begin
  found := false;
  n := 1; {n=2^(1-1)*(2^1-1), первое число вида 2^(p-1)*(2^p-1)}
  write('Поиск совершенных чисел. До какого числа искать? ');
  readln(h);
  repeat
    s := 0;
    for k := 1 to n div 2 do
      if n mod k = 0 then s := s + k;
    if s = n
      then begin
        write(n, ' ');
        found := true
      end;
    n := n shl 1 or n shl 2 {следующее число вида 2^(p-1)*(2^p-1)}
  until (n > h) or (n <= 0);
  writeln;
  writeln('Поиск окончен');
  if not found then write('Совершенных чисел до числа ', h, ' нет')
end.
Считает значительно быстрее.

Можно ещё ускорить, если проверять не n на совершенство, а 2p-1 на простоту.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var
  n, k, p, h: integer;
  found, prime: boolean;
 
begin
  found := false;
  prime := true;
  write('Поиск совершенных чисел. До какого числа искать? ');
  readln(h);
  p := 1;
  repeat
    inc(p);
    n := 1 shl p - 1; {2^p-1}
    for k := 2 to trunc(sqrt(n)) do
      begin
        prime := n mod k <> 0;
        if not prime then break
      end;
    n := ((n + 1) shr 1) * n; {число вида 2^(p-1)*(2^p-1)}
    if prime and (n <= h) and (n > 0)
      then begin
        write(n, ' ');
        found := true
      end
  until (n >= h) or (n <= 0);
  writeln;
  writeln('Поиск окончен');
  if not found then write('Совершенных чисел до числа ', h, ' нет')
end.
Считает мгновенно.

Можно ещё ускорить, применив более совершенный алгоритм проверки числа на простоту.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.01.2019, 10:22
Помогаю со студенческими работами здесь

Разработать программу, которая находит все разбиения заданного числа
Программу надо написать с помощью процедур.

Составить программу, которая находит все совершенные числа в интервале
Совершенным числом называется число, равное сумме всех делителей, меньших, чем оно само. Например, 28=1+2+4+7+14. Составить программу,...

Составьте программу, позволяющую найти все числа Фибоначчи, меньшие заданного числа N
В 1202г. Итальянский математик Леонард Пизанский (Фибоначчи) предложил такую задачу: пара кроликов каждый месяц дает приплод – двух...

написать программу,которая находит и выводит на печать все четырехзначные числа
выручайте) написать программу,которая находит и выводит на печать все четырехзначные числа вида abcd,для которых выполняется: а)a,b,c,d -...

Написать программу, которая находит из всех четырехзначных чисел, такие числа, в записи которых все цифры различны
Написать программу с использованием подпрограмм. В подпрограммах не должно присутствовать ввода исходных данных (например, с помощью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru