IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> нахождение полных чисел, написание программы
сообщение
Сообщение #1


Гость






Доброго времени суток !
Срочно нужна помощь.
Задача: Полные числа - это такие числа которые равны всем своим делителям (за исключением самого себя). Пример: 6=3+2+1 (6 делится на 3, 2 и 1). Найти все полные числа от 1 до 10000. Ответы даны: 6, 28, 496, 8128.
Не имею представления как написать такую программу в паскале, что бы она нашла эти числа.
Помогите пожалуйста, буду очень благодарен.
Заранее спасибо ! smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Вообще-то эти числа называются "Совершенные": Замечательные числа
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Спасибо volvo, очень помогло.
использовал эту программу:
Var
I,N,Summa: LongInt;
Delitel: Integer;
Begin
For I := 1 To 10000 Do Begin
Summa := 1;
For Delitel := 2 To Trunc(Sqrt(I)) Do Begin
N := (I Div Delitel);
If N * Delitel = I Then Summa := Summa + Delitel + (I Div Delitel);
End;

If Int(Sqrt(I)) = Sqrt(I) Then Summa := Summa - Trunc(Sqrt(I));

If I = Summa Then WriteLn(I, ' - ', Summa);
End;
End.

Программа показывает числа так:
6 - 6
28 - 28
496 - 496
8128 - 8128

Можно ли сделать что бы эти числа писались 1 раз, а не 2 раза через дефиз ? (А то учитель может придраться :D )
И после этого выйти из программы нельзя. Прописал в конце readln; не помогло.
И последнее, к программе мне нужно написать описание каждой строчки, тоесть что каждая строчка выпоняет (описать эти команды). Ну строки var, begin, и end я описать могу :D А вот во всех формулах и кодах которые тут присутствуют я не шарю. Может кто - то поможет? А то без описания строк работу не примут. :/

P.S volvo пробывал использовать твою программу (то что добавлено), там и строки описаны, но она у меня не работает. Хотя я просто скопировал всю программу от начала до конца, может чего лишнего взял (так как не понимаю толком smile.gif )
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Извеняюсь, добавление в конце readln; помогло.
отсалось только 2 вопроса6 можно ли сделать что бы числа псиались 1 раз без дефиса, и описание строк очень нужно :/
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Michael_Rybak
*****

Группа: Пользователи
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


прочитай хоть что-нибудь сам по паскалю. про структуру программы вообще, про арифметические операции, про if-then-else, for-do и writeln. и сам напиши комментарии.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






да согласен, прочитать мне не помешает, но на это время нужно, а мне к понедельнику сделать надо.
Впочем мне нужно всего несколько описаний:
I,N,Summa: LongInt; - вот эта строчка нужна, не понимаю что она означает.
И соответственно исходя из этой строчки что значит For I :=
Ещё не знаю N := (I Div Delitel); - что такое div не знаю.
If Int(Sqrt(I)) = Sqrt(I) - и вот это неопнтяно.
Всего несколько строк, очень нужно :/
И как сделать что бы числа писались 1 раз через запятую или в столбик неважно, но 1 раз, а не повторно через тире.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Michael_Rybak
*****

Группа: Пользователи
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


Что такое "I,N,Summa: LongInt;" ты узнаешь, потратив 5 полезных минут на ознакомление со структурой программ на паскале. Так и напиши в гугле - "паскаль. структура программы".

Что такое for ты узнаешь, ознакомившись с конструкцией for-do.

Что такое div ты узнаешь, ознакомившись с арифметическими операциями.

If Int(Sqrt(I)) = Sqrt(I) - эта строчка означает - "Если I является полным квадратом, то...". Более конкретно - Sqrt(I) вычисляет квадратный корень из I. Int(Sqrt(I)) берет от квадратного корня целую часть. Таким образом, вся строка означает дословно - "Если целая часть квадратного корня из I равна квадратному корню из I, то ...". Другими словами, "Если квадратный корень из I - целое число, то...".

До понедельника времени - море.

Удачи.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Спасибо smile.gif
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 5:36
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name