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

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

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

> дружественные числа
Rom1k
сообщение 21.03.2008 17:24
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 119
Пол: Мужской

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


два натуральных числа называют дружественными,если каждое из них равно сумме всех делителей другого, кроме самого этого числа.
найти все пары дружественных чисел,лежащих в диапазоне от 200 до 300

помогите пожалуйста.даже догадок нет(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 10.11.2009 15:59
Сообщение #2


Гость






1) ну и чем твое решение лучше приведенных выше?
2) Турбо-Паскаль, стандартные установки, ничего не меняешь - твоя программа НЕ компилируется.

Цитата
кому интересно - оставляйте заявки - покажу
С учетом вышесказанного - уже неинтересно.
Цитата
Лично мне удалось значительно улучшить алгоритм в итоге (в 5,5 раз)
Угу. Только ты сначала выложил явно специально замедленный алгоритм, а потом будешь его ускорять, да? Смотри:

var counter: longint; { <--- делаем раз }
Begin
counter := 0; x := 0; { <--- делаем два }
WriteLn('Пары дружественных чисел: ');
j:=201; { <--- делаем три } l:=300;
While j<=l do
begin
if j mod 2 = 0 then x:=drug(j) else drug1(j);
if j<x then
Begin
inc(counter); { <--- делаем четыре }
if x mod 2 = 0 then xx:=drug(x) else xx:=drug1(x);
if j=xx then Write('{',j,',',x,'} ');
end;
inc(j);
end;
writeln(counter, ' iteration(s)... '); { <--- делаем пять }
End.
И запускаем. Что видим? 45 iteration(s)... Хорошо... А теперь:
    if j mod 2 = 0 then x:=drug(j) else x := drug1(j); { <--- делаем шесть }
, и запускаем снова: 23 iteration(s). Интересно, правда? А ведь каждая итерация - это вычисление функций... А ты даже это не соизволил проверить...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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