чт, 10 окт. 2019 г. в 18:32, Sergei M. Abramov abram_AT_botik.ru < refal@botik.ru>:
> День добрый, всем! > > > То есть для последнего "поколения" эта работа лишняя. > > А что такое последнее поколение, если я строю список всех простых > чисел? > > Да, всех, но не сразу ведь. Сначала весь начальный список [2..] фильтруется на ((== 1).(gcd pp)) для pp = 2, потом полученный список снова фильтруется для pp=3*5, потом для 7*11*13*17*19*23, потом для 29*31*... Мог ошибиться в границах, но смысл должен быть понятен: каждая следующая граница (lim) получается из предыдущей примерно возведением в квадрат, так ведь? Поколение - то, что выходит после очередной фильтрации как кусок списка простых и служит сомножителями в следующем pp. Меня интересует сколько (какую долю) отсеивает каждая следующая фильтрация. Понятно, что сначала это 1/2, далее 1-(2/3)*(4/5), далее 1-(6/7)*(10/11)*...*(22/23) и т.д. Произведение - это доля остающихся. Просто хотел бы увидеть десятичные числа, как они меняются, наверно, убывают к 0. Насколько быстро? А самому кодить недосуг :) > > Наверно, лучше накапливать в виде списка, а при подаче на Filter > > для следующего шага все перемножить. > > > Интересно, для Хаскела это тоже актуально, или там умножение pp*n > ленивое? > > Ленивое, несомненно. > Неужели? Значит на Хаскеле будет автоматически накапливаться в форме терма 7*11*13*..., да? > > > А еще хотелось бы посмотреть статистику по числу (доле) отсеянных > > (прошедших) через каждый из фильтров (это мне уже как математику > > интересно). > > Алик, а мне интересно от математиков (может знакомые есть?) узнать, > есть ли хоть какие-то работы (а если есть, то какие) в этой отрасли, > где используется (\ k -> (gcd pp k) == 1)? > > Не знаю, и спросить кого тоже пока не приходит в голову. > > Нужно спасать рассылку от офтопа. > > Спамера забанить! > > > Понятно, что вызов <filter (o ((neq 0) (bind-right (Mod s.n)))) > > e.ns> на Рефале будет выполняться медленно. > > Вот, хочу сказать, что меня удивило: > > ns' = filter (\ k -> (gcd pp k) == 1) ns > > работает немного медленнее, чем > > ns' = filter ((== 1).(gcd pp)) ns > > Вот нифига ж себе? > Да, забавно. > > Всего доброго, > > Сергей Абрамов > > -- _______________ *С уважением, * *Аркадий Климов,* *с.н.с. ИППМ РАН,* *+7(499)135-32-95* *+7(916)072-81-48*