| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Усовершенствовать алгоритм поиска. |
| Автор: lanD 5.6.2006, 21:32 | ||
Программа неэффективна. Например, она анализирует четные числа больше 2, хотя очевидно, что они не могут быть простыми. Усовершенствуйте алгоритм поиска простых чисел.
|
| Автор: igorold 6.6.2006, 08:36 | ||
Держи, студент
какие средства убыстрения поиска: 1. Формируется массив простых чисел 2. число проверяется на делитель только простого числа 3. если следующее простое число больше, чем значение/предыдущее простое число, то цикл прерывается поясню: возьмем число 29, если оно не делиться на 2, 3, 5, то дальше деление проверяться не будет ... 4. происходит выход из цикла проверок при нахождении первого делителя 5. можешь сделать еще одно убыстрение - после $value == 3 делать приращение +2, т.е. не проверять заведомо четные числа - попробуй сам сделать ... |
| Автор: lanD 6.6.2006, 09:42 |
| Студентка Спасибо! Добавлено @ 09:47 Кстати, я это задание выполняла по книге "Освой сво Perl за 24 часа"! И я ещё не дошла до массивов :-) вот только начинаю... так что задание можно было выполнить с стандартными while, for, if.... ну и т.д. |
| Автор: igorold 6.6.2006, 09:52 | ||
| т.е. тебе надо сделать без массива? тогда тебе надо использовать способы ускорения 3-5 сделаешь без массива или тебе помочь? Кстати, увеличение на 2 я сделал так:
|
| Автор: lanD 6.6.2006, 10:15 |
| Нет спасибо ты и так помог, я уже сама дальше. Если во время изучения у меня будут появляться кое-какие вопросы, я буду спрашивать если можно |
| Автор: vumnik 6.6.2006, 10:40 | ||
А вот мой вариант. Тоже на делителях и без массивов.
|
| Автор: igorold 6.6.2006, 14:40 |
| Хороший вариант, а теперь осталось только его оптимизировать ... |
| Автор: lanD 7.6.2006, 01:29 | ||
Нужно модифицировать программу чтобы фигурка печаталась в вертикальном положении...
|
| Автор: igorold 7.6.2006, 08:10 | ||||||||||||
| lanD, чтобы фигурка печаталась в вертикальном положении, т.е. каждый символ на новой строке, если я правильно понял, нужно после каждого символа фигуры вставлять (печатать) \n т.е. строку
можно заменить на
соответственно и в конце вместо
вставить
ну и человечка переписать на
или так:
|
| Автор: sharq 7.6.2006, 09:52 | ||
| igorold, Ты на Perl пишешь, к чему здесь Сишные циклы? Используй foreach и постфиксную запись! Кстати, если помогаешь человеку, то пиши код с
Чтобы он сразу привыкал к хорошему стилю программирования на Perl. |
| Автор: igorold 7.6.2006, 11:08 | ||
sharq, а где вы увидели, что я не пишу
а насчет Ты на Perl пишешь, к чему здесь Сишные циклы? Используй foreach и постфиксную запись! так я не профи ... во-вторых человеку никто не отвечал ... а я ответил ... в третьих, а что этот цикл в перле не работает? а что такое постфиксная запись? а в 4-х на этом форуме я сам учусь ... |
| Автор: sharq 8.6.2006, 17:43 | ||||
lanD, советую тебе писать все свои скрипты с
igorold в первом своем примере использовал эту прагму, посмотри в чем отличие + почитай perldoc strict и можешь воспользоваться поиском, здесь уже об этом говорилось. igorold, конечно работает, т.к. основной принцип Perl - ТимТоуди но зачем писать на перл, не используя его возможностей. в данном случае:
так и я тоже |