![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
-Artur- |
![]()
Сообщение
#1
|
Гость ![]() |
Доброго времени суток !
Срочно нужна помощь. Задача: Полные числа - это такие числа которые равны всем своим делителям (за исключением самого себя). Пример: 6=3+2+1 (6 делится на 3, 2 и 1). Найти все полные числа от 1 до 10000. Ответы даны: 6, 28, 496, 8128. Не имею представления как написать такую программу в паскале, что бы она нашла эти числа. Помогите пожалуйста, буду очень благодарен. Заранее спасибо ! ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Вообще-то эти числа называются "Совершенные": Замечательные числа
|
-Artur- |
![]()
Сообщение
#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 пробывал использовать твою программу (то что добавлено), там и строки описаны, но она у меня не работает. Хотя я просто скопировал всю программу от начала до конца, может чего лишнего взял (так как не понимаю толком ![]() |
-Artur- |
![]()
Сообщение
#4
|
Гость ![]() |
Извеняюсь, добавление в конце readln; помогло.
отсалось только 2 вопроса6 можно ли сделать что бы числа псиались 1 раз без дефиса, и описание строк очень нужно :/ |
Michael_Rybak |
![]()
Сообщение
#5
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
прочитай хоть что-нибудь сам по паскалю. про структуру программы вообще, про арифметические операции, про if-then-else, for-do и writeln. и сам напиши комментарии.
|
-Artur- |
![]()
Сообщение
#6
|
Гость ![]() |
да согласен, прочитать мне не помешает, но на это время нужно, а мне к понедельнику сделать надо.
Впочем мне нужно всего несколько описаний: I,N,Summa: LongInt; - вот эта строчка нужна, не понимаю что она означает. И соответственно исходя из этой строчки что значит For I := Ещё не знаю N := (I Div Delitel); - что такое div не знаю. If Int(Sqrt(I)) = Sqrt(I) - и вот это неопнтяно. Всего несколько строк, очень нужно :/ И как сделать что бы числа писались 1 раз через запятую или в столбик неважно, но 1 раз, а не повторно через тире. |
Michael_Rybak |
![]()
Сообщение
#7
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Что такое "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 - целое число, то...". До понедельника времени - море. Удачи. |
-Artur- |
![]()
Сообщение
#8
|
Гость ![]() |
Спасибо
![]() |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 14:23 |