2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1 ... 31, 32, 33, 34, 35, 36, 37 ... 42  След.
 
 Re: Максимальные интервалы между взаимно простыми числами
Сообщение19.11.2021, 00:58 


05/09/16
12110
Dmitriy40
Истинно вам говорю: да активируйте wsl (у вас же win10?) и установите например ubuntu (там только cli будет, но ведь только оно и надо) прям из майкрософт стора. Оно то и в жизни иногда пригождается, я вот например тут недавно wifi домашний траблшутил -- iperf гонял с ноута на планшет/телефон или спидтест который есть для линуксовой командной строки.
"Вендовая" pari/gp всё одно обернута в mingw... А тут будет хоть и виртуализация, но без лишнего стороннего слоя. И x64 и многопоточность будет, все дела короче...

 Профиль  
                  
 
 Re: Максимальные интервалы между взаимно простыми числами
Сообщение19.11.2021, 11:26 


23/02/12
3372
wrest в сообщении #1539751 писал(а):
То есть, вычитая эту секунду на оверхеды, получаем "чистое" сокращение по времени в 8 раз, примерно.
Это другое дело. В этом случае приобретает значение время работы программы определения длин интервалов, в найденных таким образом вычетах ПСВ.

 Профиль  
                  
 
 Re: Максимальные интервалы между взаимно простыми числами
Сообщение19.11.2021, 14:06 
Заслуженный участник


20/08/14
11867
Россия, Москва
А на больших числах ещё забавнее:
Код:
? forstep(p=43^11,43^11+10^9,86, if(factor(p,44)[1,1]==43, cnt++););
time = 15,960 ms.
? forstep(p=43^11,43^11+10^9,86, if(p%3>0 && p%5>0 && p%7>0 && p%11>0 && p%13>0 && p%17>0 && p%19>0 && p%23>0 && p%29>0 && p%31>0 && p%37>0 && p%41>0, cnt++););
time = 7,769 ms.
? forstep(p=43^11,43^11+10^9,86, if(1, cnt++););
time = 7,630 ms.
Типа длинный if аж в сто раз быстрее простой factor! :mrgreen:

Кстати для больших примориалов даже на малых числах уже и не так уж быстрее:
Код:
? cnt=0; forstep(p=59^2,10^9,2, if(factor(p)[1,1]==59, cnt++););
time = 15min, 38,611 ms.
? cnt=0; forstep(p=59^2,10^9,2, if(factor(p,60)[1,1]==59, cnt++););
time = 3min, 11,851 ms.
? cnt=0; forstep(p=59^2,10^9,2, if(p%3>0 && p%5>0 && p%7>0 && p%11>0 && p%13>0 && p%17>0 && p%19>0 && p%23>0 && p%29>0 && p%31>0 && p%37>0 && p%41>0 && p%43>0 && p%47>0 && p%53>0, cnt++););
time = 5min, 26,449 ms.
? cnt=0; forstep(p=59^2,10^9,59, if(factor(p)[1,1]==59, cnt++););
time = 15,414 ms.
? cnt=0; forstep(p=59^2,10^9,59, if(factor(p,60)[1,1]==59, cnt++););
time = 8,330 ms.
? cnt=0; forstep(p=59^2,10^9,59, if(p%3>0 && p%5>0 && p%7>0 && p%11>0 && p%13>0 && p%17>0 && p%19>0 && p%23>0 && p%29>0 && p%31>0 && p%37>0 && p%41>0 && p%43>0 && p%47>0 && p%53>0, cnt++););
time = 11,217 ms.
? cnt=0; forstep(p=59^2,10^9,59*2, if(factor(p)[1,1]==59, cnt++);); cnt
time = 9,126 ms.
%1 = 2306411
? cnt=0; forstep(p=59^2,10^9,59*2, if(factor(p,60)[1,1]==59, cnt++);); cnt
time = 4,806 ms.
? cnt=0; forstep(p=59^2,10^9,59*2, if(p%3>0 && p%5>0 && p%7>0 && p%11>0 && p%13>0 && p%17>0 && p%19>0 && p%23>0 && p%29>0 && p%31>0 && p%37>0 && p%41>0 && p%43>0 && p%47>0 && p%53>0, cnt++););
time = 5,600 ms.
\\Измерение оверхеда цикла
? cnt=0; forstep(p=59^2,10^9,59*2, cnt++);
time = 5,538 ms.
? cnt=0; forstep(p=59^2,10^9,59*2, if(1, cnt++);); cnt
time = 5,819 ms.
%2 = 8474547
? cnt=0; forstep(p=59^2,10^9,59*2, if(cnt<2306411, cnt++);); cnt
time = 2,076 ms.
%3 = 2306411
Вот они, погрешности методики измерений, кратное увеличение числа инкрементов пересиливает пустоту if-а. :facepalm:
wrest, как видите в последнем запуске правильное значение оверхеда почти втрое ниже.

 Профиль  
                  
 
 Re: Максимальные интервалы между взаимно простыми числами
Сообщение21.11.2021, 12:47 


01/07/19
244
Все данные уже есть в статье Зиллера, оказывается. https://arxiv.org/pdf/1611.03310.pdf
(К статье приложены файлы с результатами расчетов. Например, перестановки https://arxiv.org/src/1611.03310v2/anc/permutations.txt
Очень хороши видны "разветвления".)

Правда, они там представлены слегка в другом виде, что сначала сбило с толку.
Любой интервал они представляют в виде последовательности остатков по каждому простому числу из праймориала - по логике китайской теоремы об остатках (если я ничего не перепутал).
Описано в "Proposition 1.5."
По мелочам кое-что неясно, но это как-нибудь потом.

Ну и в свете последних обсуждений о скорости работы программ, интересно будет вот это глянуть:
Цитата:
3.2 Computation time
All algorithms except ILP were implemented and executed on a common PC with an i7 processor at boosted 3.9 GHz in a single thread application. For solving the respective integer linear programs according to the equations 2.2, however, we utilised SYMPHONY software [18, 14] which used all threads in parallel. The corresponding time needs were enlarged by an empirically estimated factor to make them comparable.

 Профиль  
                  
 
 Re: Максимальные интервалы между взаимно простыми числами
Сообщение21.11.2021, 15:24 
Заслуженный участник


20/08/14
11867
Россия, Москва
Yury_rsn в сообщении #1540014 писал(а):
Любой интервал они представляют в виде последовательности остатков по каждому простому числу из праймориала - по логике китайской теоремы об остатках (если я ничего не перепутал).
Да, это удобно, числа маленькие (вместо одного сверхбольшого), у вас ровно они же в столбце D таблицы.
Кстати в файле moduli.txt ровно минимальные простые делители нечётных чисел, чем я постоянно пользуюсь и Вам тоже несколько раз менял под это программу.

Yury_rsn в сообщении #1540014 писал(а):
Ну и в свете последних обсуждений о скорости работы программ, интересно будет вот это глянуть:
Ну, смысла мало: у нас тут скорость на много порядков хуже/меньше, у них ILP для 101# занял порядка пары дней, у меня (на асме! не PARI и даже не С) вычисление 37# заняло 11100с, соответственно 101# займёт порядка $10^{20\ldots22}$ лет. :facepalm:

-- 21.11.2021, 15:52 --

Кстати программка PARI/GP для восстановления нечётного числа по остаткам в v[] на простые от трёх и далее:
Код:
? v=[1,3,2,5,6]; t=Mod(1,2); for(i=1,#v, t=chinese(t, Mod(v[i], prime(i+1)))); t
%1 = Mod(17803, 30030)
? v=[1,3,2,5,6]; t=Mod(1,2); for(i=1,#v, t=chinese(t, Mod(v[i], prime(i+1)))); lift(t)
%2 = 17803
? forstep(a=17803,17803+22,2, print1(factor(a)[1,1],", "))
19, 3, 17807, 11, 3, 47, 5, 3, 103, 71, 3, 5,
\\Интервал получился неправильный, не знаю почему, правильный вот такой:
? v=[1,4,3,1,1]; t=Mod(1,2); for(i=1,#v, t=chinese(t, Mod(v[i], prime(i+1)))); t
%3 = Mod(9439, 30030)
? v=[1,4,3,1,1]; t=Mod(1,2); for(i=1,#v, t=chinese(t, Mod(v[i], prime(i+1)))); lift(t)
%4 = 9439
? forstep(a=9439,9439+22,2, print1(factor(a)[1,1],", "))
9439, 3, 7, 5, 3, 11, 13, 3, 5, 7, 3, 9461,

 Профиль  
                  
 
 Re: Максимальные интервалы между взаимно простыми числами
Сообщение21.11.2021, 21:45 


01/07/19
244
Dmitriy40 в сообщении #1540045 писал(а):
у нас тут скорость на много порядков хуже/меньше, у них ILP для 101# занял порядка пары дней, у меня (на асме! не PARI и даже не С) вычисление 37# заняло 11100с,

Расскажите, плиз, где у них преимущество?
Он же пишет, что почти всё было посчитано на обычном компьютере.
ILP - это что?

 Профиль  
                  
 
 Re: Максимальные интервалы между взаимно простыми числами
Сообщение21.11.2021, 22:03 
Заслуженный участник


20/08/14
11867
Россия, Москва
Yury_rsn в сообщении #1540076 писал(а):
Расскажите, плиз, где у них преимущество?
Разве не этому посвящена вся их статья?! Весь раздел 2, 15 страниц математики ... Я вообще-то их не изучал.
Yury_rsn в сообщении #1540076 писал(а):
ILP - это что?
Если не ошибаюсь то один из алгоритмов вычисления чего-то там, встречается на стр.11 сразу после формулы (2.1). Но я даже не смотрел что это такое.
Если не нравится ILP, возьмите DSA (алгоритм со стр.16), они примерно сравнимы. Про варианты GPA вообще молчу-молчу.
Если не ошибаюсь, то у меня (и тут в теме везде) использован вариант алгоритма BSA или близкий к нему.

 Профиль  
                  
 
 Re: Максимальные интервалы между взаимно простыми числами
Сообщение21.11.2021, 23:46 


01/07/19
244
Dmitriy40 в сообщении #1540077 писал(а):
Разве не этому посвящена вся их статья?! Весь раздел 2, 15 страниц математики ... Я вообще-то их не изучал.

А, ага.
А я подумал, что вы говорите о каких-то вариантах "железа". Типа, у них круче.

 Профиль  
                  
 
 Re: Максимальные интервалы между взаимно простыми числами
Сообщение22.11.2021, 13:26 
Заслуженный участник


20/08/14
11867
Россия, Москва
У них круче, но на такую малость, которая исчезает уже на следующем же примориале (частота чуть выше, ядер вдвое больше, да и всё в общем). Выигрыша на десятки порядков не даст никакое железо, максимум в тысячу-миллион раз, ну может миллиарды если распределённые вычисления использовать (они не использовали вроде бы).
Но даже по графику времени счёта у них прекрасно видно что дело не в железе — скорость роста другая, а для улучшения железа она должна быть той же. На улучшение железа можно списать (если бы не было других данных кроме этого графика) переход от BSA к BPA и RPA на графике — скорость роста практически та же, только сама скорость выше. Математически это выражается $O(bn^a)=O(n^a)$, для разного железа $a$ (надеюсь всем понятно что это фактически наклон графика) будет ровно той же, другой будет лишь константа $b$, которая съедается $O()$. А другая $a$ говорит об изменении алгоритма.

 Профиль  
                  
 
 Re: Максимальные интервалы между взаимно простыми числами
Сообщение22.11.2021, 16:12 


01/07/19
244
Dmitriy40 в сообщении #1540135 писал(а):
У них круче, но на такую малость, которая исчезает уже на следующем же примориале (частота чуть выше, ядер вдвое больше, да и всё в общем). Выигрыша на десятки порядков не даст никакое железо, максимум в тысячу-миллион раз, ну может миллиарды если распределённые вычисления использовать (они не использовали вроде бы).
Но даже по графику времени счёта у них прекрасно видно что дело не в железе — ...

Хорошо. А те примеры алгоритмов, которые они привели в статье - их можно использовать для аналогичных подсчётов?
Или это только наброски для демонстрации идеи?(концепции)

Для чего? Там посчитаны интервалы максимальной, Якобсталевской длины для каждого праймориала. А хочется получить расчеты и по интервалам меньшей длины.

 Профиль  
                  
 
 Re: Максимальные интервалы между взаимно простыми числами
Сообщение22.11.2021, 19:06 
Заслуженный участник


20/08/14
11867
Россия, Москва
Yury_rsn в сообщении #1540161 писал(а):
А те примеры алгоритмов, которые они привели в статье - их можно использовать для аналогичных подсчётов?
Наверняка можно: надо всего лишь внимательно в них разобраться, переписать на любом используемом языке и довести до стадии выполняемого кода. Они же справились, почему нельзя ещё кому-то ... Реализовать уже придуманный алгоритм всегда проще чем придумать новый (лучше известных).

 Профиль  
                  
 
 Re: Максимальные интервалы между взаимно простыми числами
Сообщение22.11.2021, 23:21 


01/07/19
244
Dmitriy40 в сообщении #1540176 писал(а):
всего лишь внимательно в них разобраться, переписать на любом используемом языке и довести до стадии выполняемого кода.

8-)
Всего лишь :-)

 Профиль  
                  
 
 Re: Максимальные интервалы между взаимно простыми числами
Сообщение22.11.2021, 23:24 
Заслуженный участник


20/08/14
11867
Россия, Москва
Да, Вы поняли правильно. 8-)

 Профиль  
                  
 
 Re: Максимальные интервалы между взаимно простыми числами
Сообщение23.11.2021, 10:26 


31/12/10
1555
Пытался найти начальное число интервала d = 282, в котором я поменял
местами цепочки 97 и 89. Но последнее сравнение WolframAlpha решить
не может. Вот оно.
13060740112619398671967+2097862499496067927075453x mod 381099389413219=0

Есть ли возможность его решить ?

 Профиль  
                  
 
 Re: Максимальные интервалы между взаимно простыми числами
Сообщение23.11.2021, 13:39 
Заслуженный участник


20/08/14
11867
Россия, Москва
Если уменьшить числа, взяв их сразу по модулю, то может.
Впрочем у меня почему то может и без преобразований.

Ну и я не совсем понимаю зачем что-то решать, ведь расстановка простых внутри интервала однозначно переводится в остатки начала интервала по этим простым, а они по китайской теореме об остатках сразу же дают начало интервала (уже не однозначно, но с периодом примориала). Т.е. список минимальных простых делителей для всего интервала однозначно (в пределах примориала) задаёт начало интервала. Выше даже готовую программку выложил которая его вычисляет по списку остатков.

Могу и по минимальным простым делителям (для нечётных чисел, заодно и величину примориала выдаёт):
Код:
? v=[3, 7, 5, 3, 11, 13, 3, 5, 7, 3]; t=Mod(1,2); for(i=1,#v, t=chinese(t, Mod(v[i]-i*2, v[i]))); t
%1 = Mod(9439, 30030)
? forstep(a=9439,9439+22,2, print1(factor(a)[1,1],", "))
9439, 3, 7, 5, 3, 11, 13, 3, 5, 7, 3, 9461,
Yury_rsn
Вот кстати заметьте: если убрать тройки, то так легко восстановить не получится.

И сюда уже вполне можно подставлять числа из файла moduli.txt.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 624 ]  На страницу Пред.  1 ... 31, 32, 33, 34, 35, 36, 37 ... 42  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group