чт, 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*
  • Спи... Sergei M. Abramov
    • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
      • ... Arkady Klimov arkady . klimov_AT_gmail . com
        • ... Sergei M. Abramov
          • ... Andrei Klimov andrei_AT_klimov . net
          • ... Sergei M. Abramov
          • ... Arkady Klimov arkady . klimov_AT_gmail . com
            • ... Sergei M. Abramov
              • ... Anton Orlov orlovan_AT_gmail . com
                • ... Sergei M. Abramov
        • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
          • ... Sergei M. Abramov
            • ... Boyko Bantchev boykobb_AT_gmail . com
              • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
                • ... Boyko Bantchev boykobb_AT_gmail . com

Ответить