0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 2

Написать программу поиска совершенного числа.

22.11.2013, 16:35. Показов 3490. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задали две задачи - хз как решить, но уверен что они очень простые, а я очень глуп.
1) К любому натуральному числу прибавить первую цифру. То есть 1488 ---> 14881, 228 --->2282 и т.д.
2) Написать программу поиска совершенного числа. (Совершенное число равно сумме всех своих делителей, это 6, 28, 496, 8128, 33550336, 8589869056, и т.д.)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.11.2013, 16:35
Ответы с готовыми решениями:

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

Написать функцию определения совершенного числа
Написать функцию определения совершенного числа нужно оформить в виде фунции и завернуть все в модуль!!!!!!!! Помогите пожалуйста ...

Даны три числа A, B, C, написать программу поиска максимум и минимум
Здравствуйте! Помогите, пожалуйста, в оформлении задачи: Даны три числа A, B, C, написать программу поиска максимум и минимум,...

13
Почетный модератор
 Аватар для ildwine
6197 / 2948 / 1300
Регистрация: 04.03.2013
Сообщений: 5,794
Записей в блоге: 1
22.11.2013, 16:41
Цитата Сообщение от 2ch Посмотреть сообщение
1) К любому натуральному числу прибавить первую цифру. То есть 1488 ---> 14881, 228 --->2282 и т.д.
Через строки:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var
  a, e : integer;
  s : string;
begin
  repeat
    write('Введи число: ');
    readln(a)
  until a > 0;
    str(a, s);
    s := s + s[1];
    val(s, a, e);
    writeln(a)
end.
Через выделение цифры:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var
  a, e : integer;  
begin
  repeat
    write('Введи число: ');
    readln(a)
  until a > 0;
    e := a;
    while e > 10 do
      e := e div 10;
    a := a * 10 + e;    
    writeln(a)
end.
0
 Аватар для Новичок
1682 / 1097 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
22.11.2013, 16:46
Цитата Сообщение от 2ch Посмотреть сообщение
1) К любому натуральному числу прибавить первую цифру. То есть 1488 ---> 14881, 228 --->2282 и т.д.
Pascal
1
n:=n*10+k;//n-само число,к цифра
Цитата Сообщение от 2ch Посмотреть сообщение
2) Написать программу поиска совершенного числа. (Совершенное число равно сумме всех своих делителей, это 6, 28, 496, 8128, 33550336, 8589869056, и т.д.)
Если числа небольшие нетрудно,но если такие огромные как 33550336 то написать программу которая работает быстро тяжело.

Добавлено через 4 минуты
Программа 1 полная,
Pascal
1
2
3
4
5
6
7
8
9
10
var n,m:LongInt;
begin
Write('Введите натуральное число:');
Read(n);
m:=n;
while m>9 do m:=m div 10;
n:=n*10+m;
Writeln('Полученное число:',n);
Readln;
end.
1
Почетный модератор
 Аватар для ildwine
6197 / 2948 / 1300
Регистрация: 04.03.2013
Сообщений: 5,794
Записей в блоге: 1
22.11.2013, 16:50
Новичок, второй вариант я тоже указал.
1
 Аватар для Новичок
1682 / 1097 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
22.11.2013, 16:51
А,ну да точно,простите.Не заметил вторую часть вашего поста.
0
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 2
22.11.2013, 17:03  [ТС]
Цитата Сообщение от Новичок Посмотреть сообщение
Если числа небольшие нетрудно,но если такие огромные как 33550336 то написать программу которая работает быстро тяжело.
В пределе integer вполне хватит. Числа то знаю, а какой алгоритм поиска?
0
18 / 11 / 5
Регистрация: 27.05.2013
Сообщений: 36
22.11.2013, 18:59
Цитата Сообщение от 2ch Посмотреть сообщение
В пределе integer вполне хватит. Числа то знаю, а какой алгоритм поиска?
В цикле от 2 до N (наше число) div 2 проверяем, делится ли на текущее i число N без остатка (N mod i = 0). Если да, то увеличиваем некоторый счетчик суммы на i. В конце проверяем, если i = N - число совершенное
0
 Аватар для Новичок
1682 / 1097 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
22.11.2013, 19:02
Ну раз в пределах Integer,такая прога пойдет,
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var i,j,s:Integer;
begin
for i:=1 to 32767 do//Проходим все числа от 1 до макс. в типе Integer
begin
s:=0;//Обнуляем сумму
for j:=1 to i div 2 do //Перебираем все делители от 1
if i mod j=0 then s:=s+j;//Если делится то прибавляем к s
if s=i then Write(i,' ');//Если сумма равна числу выводим на экран
end;
Writeln;
Writeln('Программа завершена.');
Readln;
end.
Находит все совершенные числа в пределах Integer.
1
18 / 11 / 5
Регистрация: 27.05.2013
Сообщений: 36
22.11.2013, 22:24
Новичок, один маленький совет - вместо того, чтобы явно задавать число 32767, можно написать high(integer). (Хотя, может Турбо Паскаль так не понимает, и я ошибаюсь). От этого, конечно, результат работы программы не изменится, но выглядеть будет гораздо лучше =) А если еще и табуляции будут, так вообще сказка) Просто так удобнее читать код
1
Почетный модератор
 Аватар для ildwine
6197 / 2948 / 1300
Регистрация: 04.03.2013
Сообщений: 5,794
Записей в блоге: 1
22.11.2013, 22:29
Gealz, паскали такие паскали. high(integer) турбо точно не понимает. Надо максимально стараться писать под компилятор, который указан в заголовке раздела, ничего лишнего, но и ничего недостающего.
0
22.11.2013, 22:44

Не по теме:

ildwine, не поленился, и специально скачал Турбо чтобы проверить. Работает :P

0
 Аватар для Новичок
1682 / 1097 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
22.11.2013, 23:01
Я вот не помню,а ведь есть какая-то константа типа MAX_INT,но не помню какая.А насчет табуляции-не привык я форматировать код свой.А вообще это по желанию-кто как хочет так и пишет.
0
3030 / 1916 / 1649
Регистрация: 30.04.2011
Сообщений: 3,060
22.11.2013, 23:09
Самый быстрый вариант
1
 Аватар для Новичок
1682 / 1097 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
23.11.2013, 10:36
Да алгоритм UI очень классный-прям летает!Единственное,что скорее всего автору темы не это главное.Скорее всего у них тема циклы и целочисленная арифметика и не нужен такой крутой код.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2013, 10:36
Помогаю со студенческими работами здесь

Написать программу с функцией для поиска экстремального числа(наибольшего или наименьшего) элемента массива
Написать программу с функцией для поиска экстремального числа(наибольшего или наименьшего) элемента массива. Массив заполнить случайными...

2. Написать программу поиска двузначных чисел, обладающих следующим свойством: если к сумме цифр числа прибавить квадрат этой суммы, то получится снов
Кто может напишите пожалуйста эти программы с процедурой или функцией: 1) Дан двумерный массив. Вставьте нулевую строку перед строкой, в...

Реализовать программу для расчёта совершенного числа в диапазоне от 0 до 50000
Требуется реализовать программу для расчёта совершенного числа в диапазоне от 0 до 50000.Программа должна раскладывать число на слагаемые и...

Написать программу для поиска четырёхзначного числа
Написать программу для поиска четырёхзначного числа, которое при делении на 133 даёт остаток 125, а при делении на 134 остаток 111.

Написать программу поиска числа Фибоначчи с помощью рекурсии
написать программу числа Фибоначчи с помощью рекурсии


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

Новые блоги и статьи
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru