| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Решето Эратосфена |
| Автор: ressac 2.11.2009, 11:43 | ||
| http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%88%D0%B5%D1%82%D0%BE_%D0%AD%D1%80%D0%B0%D1%82%D0%BE%D1%81%D1%84%D0%B5%D0%BD%D0%B0 я вот сделал, только не очень мне нравится :( может кто-то сможет более проще и элегантней написать это?
|
| Автор: 17dufa 2.11.2009, 12:50 |
| ressac, Ваша функция mult слегка непонятна. почему Вы не остановились на тупом переводе приведенного в вики псевдокода на си? |
| Автор: ressac 2.11.2009, 13:14 |
| я просто сделал поиск методом деления. вы думаете лучше сделать так как в вики? попробую ща... |
| Автор: azesmcar 2.11.2009, 13:45 | ||
так подойдет? хотя это не самое оптимальное решение. |
| Автор: ressac 2.11.2009, 13:53 |
| там мне в рекурсивном виде надо ;) |
| Автор: ressac 2.11.2009, 14:32 | ||
вот я переделал mult
|
| Автор: 17dufa 2.11.2009, 15:33 | ||||
ressac, усе, до меня дошло. На Вашем месте, я бы переделал mult вот в такое:
и вызывал бы соответственно так:
|
| Автор: ressac 2.11.2009, 16:49 |
| ты опробывал у себя это? у меня виснит |
| Автор: 17dufa 3.11.2009, 11:02 | ||
ressac, нет конечно
то есть в функции mult надо v[pos-1] = 0; а не v[pos] = 0. С именами бы тоже чего-нить сделать не мешало. а откуда такая любовь к рекурсии? на функциональный язык планируете перейти? |
| Автор: ressac 3.11.2009, 20:08 |
| да нет просто это задачи из универа а вообще рекурсия нравится сама по себе |
| Автор: 17dufa 5.11.2009, 10:56 |
| ressac, главное не увлекайтесь. в C++ хвостовую рекурсию в цикл компилятор преобразовывать, насколько я знаю, не будет. в данной задаче, например, решение с циклами должно быть эффективнее и думаю многим, в частности мне, будет понятнее. и имена все-таки поменяйте |
| Автор: Lazin 5.11.2009, 11:06 | ||
|
| Автор: 17dufa 5.11.2009, 12:27 |
| Lazin, класс. а что за язык? и один косяк - автора интересует рекурсия. циклы ему не по душе *а что делает |> ignore ? и внутренний цикл можно начинать не с i, а с i*i |
| Автор: Lazin 5.11.2009, 13:11 |
F# согласен, но это и не цикл в традиционном понимании, это ленивая последовательность оператор |> берет то, что справа и передает в ф-ю слева, в данном случае эта ф-я применяется для того, что-бы компилятор не ругался на игнорируемое возвращаемое значение нет, нельзя допустим i = 3, тогда в хэш таблицу попадут числа начиная с 9, а нужно, что-бы попали - 3, 6, 9, 12 итд угу, можно |