![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
vadiml |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: 5 Всего: 7 |
> К сожалению мое учебное пособие в отсканированном виде ужастного качества с кучей ошибок.
Вы бы лучше взяли Learning Perl (Изучаем Perl) и CamelBook, они есть в сети на русском в прекрасном качестве, и ссылки на них приводили на этом форуме не раз. |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
не $value++ на $value+=2, а $i++ на $i+=2 с множителями тож самое: $j+=2 Полагаете, что 1..N более математично чем 0..N-1? |
|||
|
||||
Lisssa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 27.9.2011 Репутация: нет Всего: нет |
Спасибо огромное за рекомендацию. Обязательно прочитаю, если осилю дорогу по которой уже пошла, а то еще и месяца не прошло изучения Перл, а уже помутнел разум. Вы его рекомендуете совсем очернить ?))) В данное руководстве, я уже 4 главу читаю "списки, массивы.", очень жалко бросать ... Знаете ли не так уж легко эти главы дались. Это же хорошо , что ошибки в книге. Когда их исправляешь начиаешь включать голову ![]() |
|||
|
||||
Lisssa |
|
||||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 27.9.2011 Репутация: нет Всего: нет |
Не , не , Вы наверно очень бегло пробежали глазами по скрипту и не поняли смысла. Определение: Простое число - это целое число , которое можно поделить только на само себя и на единицу. $vlaue - это переменная , которая проверяется на принадлежность к простому числу. Соответствено , было бы логично не проверять четные числа, поэтому сначало присваиваем ему значение $value = 1; Ну а потом идем проверкой по нечетным числам инкриментируя 2-ой. $value+=2. Идея: Соответственно $i и $j это множители $value. Нужо перемножить все возможные варианты от 2 до ($value-1), тоесть предположим цифра 7 Если перемножить всеми возможными парами 2,3,4,5,6 , то 7 ну ни как не получим. Вот и есть смысл простого числа. предположим цифра 6 Перемножаем 2,3,4,5. Есть пара множителей , которые равны 6 = 2*3, сответственно число не простое. Ну и т.д. в хронологичной последовательности . По поводу не четных множителей я как раз так и пробывала, но почему-то не работет. Просто во втором примере вместо $i и $j использовала $a и $b. Переписываю этот кусок с множителями $i и $j.
ну соответственно оператор next if $i==1; # Чтобы скрипт не перемножил случайно 1 и само число. Тогда множители в этом куске программы будут всегда и она пропустит и простые числа. >>Полагаете, что 1..N более математично чем 0..N-1? Не то имела ввиду, было бы более логично иметь такой знак в математическом смысле , не просто сторого меньше , а меньше или равно. Значит в этом смысле его просто не существует, ну и бог с ним и этого синтаксиса вполне хватает. Это сообщение отредактировал(а) Lisssa - 19.10.2011, 10:37 |
||||
|
|||||
MakTpaxep |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 25.11.2010 Репутация: нет Всего: нет |
В последнем elsif должно быть $a == $b. У вас работает потому что они уже равны к этому времени, но в будущем избегайте этой новичковой ошибки)) По поводу рандома - привыкайте) По всех языках обращение в первому элеметну массива идёт по нулевому индексу. И это очень естественно) Это сообщение отредактировал(а) MakTpaxep - 19.10.2011, 11:02 |
||||
|
|||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
# perl -MList::Util=sum -le '@prim = qw( 2 ); $n = $prim[-1]+1; while (@prim < $ARGV[0]) { foreach (@prim) { push @prim, $n unless (sum map { $n%$_ ? 0 : 1 } @prim) } $n+=2 } print "@prim"' 100
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541 |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
btw, можно упростить
![]() |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
||||
|
||||
Lisssa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 27.9.2011 Репутация: нет Всего: нет |
- Семён Семёныч! Ну что же это Вы ? - Ааааахх ! Да , точно . Ах ну, да точно , оператор elsif ожидает в условии встретить смысловое значение истина или лож. На самом деле хотела задать через оператор сравнения, а именно равенства "==". Блин, а засунула оператор присваивания "=". Буду бороться с невнимательностью всеми силами, а то именно на этом постоянно и спотыкалась в написании. Спасибки за исправление. ![]() |
|||
|
||||
Lisssa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 27.9.2011 Репутация: нет Всего: нет |
arto, ну да , прикольно , коротко и наверно элегантно. Сейчас пока не могу осмыслить данный код в полной мере, вернусь к нему чуть позже , когда еще пару глав прочитаю. По книге я еще и модули пока ставить не умею и только массивы начинаю читать.)) Но все равно интересно, завтра, после завтра сравню два когда на скорость, как будет доступ к двум машинам. Отпишу сюда результаты теста. Как новенькой интересно , что будет быстрее, модуль или просто Перл операторы в скопе. Это сообщение отредактировал(а) Lisssa - 20.10.2011, 07:15 |
|||
|
||||
dixoNICH |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
зачем доступ к двум машинам для того, чтобы сравнить скорость?
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
они побегут наперегонки.
|
|||
|
||||
Lisssa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 27.9.2011 Репутация: нет Всего: нет |
Угумс . Причем одна однаядерная с двумя гигами , а вторая четех с 4 гигами. Перловский скрипт на мощную , а скрипт с модулем на слабенькую , потом наоборот. )))
Просто он не видел , как машина вичисляет простые числа . Чем дальше тем медленее, забавно на это смотреть. + Там еще у знакогмого на Си есть код, будет интересно сравнить. Хотя по вычислениям Си наверно победит, я не знаю , вот и проверю. Дикс ,а какими средствами и инструментами , Вы замеряете скорость скриптов ? Это сообщение отредактировал(а) Lisssa - 21.10.2011, 07:43 |
|||
|
||||
Pfailed |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
||||
|
||||
Lisssa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 27.9.2011 Репутация: нет Всего: нет |
Мдааа , смотрю в книгу , вижу фигу ... ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |