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

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

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

> нахождение полных чисел, написание программы
-Artur-
сообщение 9.12.2007 2:23
Сообщение #1


Гость






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


Гость






Вообще-то эти числа называются "Совершенные": Замечательные числа
 К началу страницы 
+ Ответить 
-Artur-
сообщение 9.12.2007 2:56
Сообщение #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 )
 К началу страницы 
+ Ответить 
-Artur-
сообщение 9.12.2007 3:06
Сообщение #4


Гость






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


Michael_Rybak
*****

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

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


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


Гость






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


Гость






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

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

 



- Текстовая версия 20.07.2025 14:17
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"