По адресу /math/33094/deleting-any-digit-yields-a-prime-is-there-a-name-for-this задается следующий вопрос. Сколько простых чисел осталось простыми после удаления одной из ее цифр? Например 719
, такой простой, как вы получаете 71
, 19
и 79
. Пока этот вопрос не решен, я подумал, что это хороший вызов для программирования.
Задача. Дайте наибольшее простое число, которое вы можете найти, и оно останется простым после удаления любой из его цифр. Вы также должны предоставить код, который его находит.
Гол. Значение простого вы даете.
Вы можете использовать любой язык программирования и библиотеки, которые вам нравятся, если они бесплатны.
Для начала, 99444901133
это самая большая информация на связанной странице.
Лимит времени. Я приму самый большой правильный ответ, данный ровно через неделю после первого правильного ответа, который больше, чем 99444901133
приведенный в ответе.
Результаты пока что.
Python (primo)
4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111
J (randomra) (Этот ответ запустил недельный таймер 21 февраля 2013 года.)
222223333333
9901444133
(удаление одного 9) не является простым (7 x 1414492019
). Ваш предыдущий пример был верным.Ответы:
274 цифры
Это заняло около 20 часов процессорного времени, чтобы найти, и около 2 минут на простое, чтобы доказать. Напротив, решение из 84 цифр можно найти примерно за 3 минуты.
84 цифры
77777777999999999999999777777777 (32 цифры)
66666666666666622222222222222333 (32 цифры)
647777777777777777777777777 (27 цифр)
44444441333333333333 (20 цифр)
999996677777777777 (18 цифр)
167 (15 цифр) 1677
Я рекомендую этот инструмент, если вы хотите подтвердить первичность: апплет D. Alpern's ECM
Также используется подход repdigit, который, по-видимому, является подходом, который наиболее вероятно находит большие значения. Следующий скрипт алгоритмически пропускает большинство чисел или усечений, что приведет к кратности 2, 3, 5 и теперь 11 c / o PeterTaylor (его вклад увеличил эффективность примерно на 50%).
my_math.py
можно найти здесь: http://codepad.org/KtXsydxK Вкачестве альтернативы, вы также можете использовать
gmpy.is_prime
функцию: GMPY ProjectНекоторые небольшие улучшения скорости в результате профилирования. Проверка первичности для самого длинного из четырех кандидатов была перемещена до конца,
xrange
заменяетrange
иlong
заменяетint
приведение типов.int
кажется, что есть лишние издержки, если вычисленное выражение приводит кlong
.Правила делимости
Пусть N будет положительным целым числом вида a ... ab ... bc ... c , где a , b и c - повторяющиеся цифры.
На 2 и 5
- во избежание деления на 2 и 5 , c может не входить в набор [0, 2, 4, 5, 6, 8] . Кроме того, если b является членом этого набора, длина c может быть не менее 2.
По 3
- если N = 1 (мод 3) , то N может не содержать ни одного из [1, 4, 7] , так как удаление любого из них тривиально приведет к кратному 3 . Аналогично для N = 2 (мод 3) и [2, 5, 8] . Эта реализация использует слегка ослабленную форму этого: если N содержит один из [1, 4, 7] , он может не содержать ни одного из [2, 5, 8] , и наоборот. Кроме того, N может состоять не только из [0, 3, 6, 9] . Это в значительной степени эквивалентное утверждение, но оно допускает некоторые тривиальные случаи, например a , b и cкаждый повторяется кратно 3 раза.
К 11
- как отмечает ПитерТейлор , если N имеет форму aabbcc ... xxyyzz , то есть он состоит только из цифр, повторяемых четное число раз, он тривиально делится на 11 : a0b0c ... x0y0z . Это наблюдение устраняет половину пространства поиска. Если N имеет нечетную длину, то длина a , b и c также должна быть нечетной (уменьшение пространства поиска на 75%), а если N имеет четную длину, то только одно из a , b или c может быть четным в длину (25% сокращение пространства поиска).
- гипотеза: если abc кратно 11 , например 407 , то все нечетные повторения a , b и c также будут кратны 11 . Это выходит за рамки вышеуказанной делимости на правило 11 ; на самом деле, среди тех, которые явно разрешены, есть только нечетные повторения. У меня нет доказательств этого, но систематическое тестирование не смогло найти контрпример. Сравните: 444077777 , 44444000777 , 44444440000077777777777 и т. Д.
Любой может стесняться доказать или опровергнуть эту гипотезу.С тех пор aditsu продемонстрировала, что это правильно.Другие формы
2 набора повторяющихся цифр.
Номера вида, который преследовал рандома , a ... ab ... b , кажутся гораздо более редкими. Есть только 7 решений менее 10 1700 , самое большое из которых имеет длину 12 цифр.
4 набора повторяющихся цифр.
Номера этой формы, a ... ab ... bc ... cd ... d , кажутся более плотно распределенными, чем те, которые я искал. Есть 69 решений менее 10 100 , по сравнению с 32 с использованием 3 наборов повторяющихся цифр. Те между 10 11 и 10 100 следующие:
Есть простой эвристический аргумент относительно того, почему это должно иметь место. Для каждой цифровой длины существует несколько повторных наборов (т.е. 3 повторных набора или 4 повторных набора и т. Д.), Для которых ожидаемое количество решений будет наибольшим. Переход происходит, когда число дополнительных возможных решений, взятых как отношение, перевешивает вероятность того, что дополнительное число, которое нужно проверить, является простым. Учитывая экспоненциальный характер возможностей проверки и логарифмический характер распределения простых чисел, это происходит относительно быстро.
Например, если мы хотим найти решение из 300 цифр, проверка 4 наборов повторяющихся цифр будет гораздо более вероятной, чем 3 набора, а 5 наборов будут еще более вероятными. Однако, имея в своем распоряжении вычислительную мощность, найти решение, намного превышающее 100 цифр с 4 наборами, было бы за пределами моей емкости, не говоря уже о 5 или 6.
источник
d^x e^y f^z
требует, чтобы по крайней мере две длины последовательности были нечетными, чтобы избежать делимости на 11. Я не знаю,is_prime
отклонят ли кратные числа 11 достаточно быстро, чтобы это явно не стоило принимать во внимание.(na&1)+(nb&1)+(nc&1) > 1
это достаточно просто, что это должно быть быстрее. Подождите, это может привести к короткому замыканию полных ветвей! Еслиna
четное иnb + nc
нечетное, то одно из них[nb, nc]
обязательно должно быть четным, и вы можете просто перейти к следующемуna
.2
.1
означает, что это, вероятно, только премьер222223333333 (12 цифр)
Здесь я искал только aa..aabb..bb формат до 100 цифр. Только другие хиты 23 37 53 73 113 311.
Код J (очищен) (извините, объяснений нет):
источник
Изменить: кто-то уже сделал более глубокий анализ, чем я здесь.
Не решение, а приблизительная оценка количества n-значных решений.
Генерация J кода
источник
Javascript (грубая сила)
Еще не нашел большее число
http://jsfiddle.net/79FDr/4/
Без библиотеки bigint javascript ограничен целыми числами
<= 2^53
.Поскольку это Javascript, браузер будет жаловаться, если мы не выпустим поток выполнения для обновления пользовательского интерфейса, в результате я решил отследить, в каком месте находится алгоритм в пользовательском интерфейсе.
источник
Была опубликована ссылка на анализ проблемы, но я подумал, что в ней не хватает нескольких вещей. Давайте посмотрим на числа m цифр, состоящих из k последовательностей из 1 или более одинаковых цифр. Было показано, что если мы разбиваем цифры на группы {0, 3, 6, 9}, {1, 4, 7} и {2, 5, 8}, решение не может содержать цифры как второй, так и третьей группы и он должен содержать 3n + 2 цифры из одной из этих групп. По крайней мере, две из k последовательностей должны иметь нечетное количество цифр. Из цифр {1, 4, 7} только 1 и 7 могут быть младшими цифрами. Ни один из {2, 5, 8} не может быть самой младшей цифрой. Таким образом, есть четыре (1, 3, 7, 9) или два (3, 9) выбора для самой младшей цифры,
Сколько там кандидатов? У нас есть m цифр, разбитых на k последовательностей, по крайней мере, 1 цифра. Существует (m - k + 1) более (k - 1) способов выбора длин этих последовательностей, что составляет около (m - 1,5k + 2) ^ (k - 1) / (k - 1) !. Есть 2 или 4 варианта для самой младшей цифры, всего шесть. Есть шесть вариантов выбора других цифр, кроме 36/7 вариантов выбора для старшей цифры; общая сумма составляет (6/7) * 6 ^ k. Есть 2 ^ k способа выбрать, является ли длина последовательности четной или нечетной; k + 1 из них исключено, потому что ни один или только один нечетны; мы умножаем количество выборов на (1 - (k + 1) / 2 ^ k), что составляет 1/4 при k = 2, 1/2 при k = 3, 11/16 при k = 4 и т. д. Число цифр из набора {1, 4, 7} или {2, 5, 8} должно быть 3n + 2, поэтому число вариантов делится на 3.
Умножая все эти числа, число кандидатов
или
Сам кандидат и k чисел, которые создаются путем удаления цифры, должны быть простыми числами. Вероятность того, что случайное целое число вокруг N является простым, составляет около 1 / ln N. Вероятность случайного числа из m цифр составляет около 1 / (m ln 10). Однако цифры здесь не случайны. Все они были выбраны так, чтобы не делиться на 2, 3 или 5. 8 из любых 30 последовательных целых чисел не делятся на 2, 3 или 5. Следовательно, вероятность быть простым числом равна (30/8) / (млн. д. 10) или около 1,6286 / м.
Ожидаемое количество решений составляет около
или для большого м о
Для k = 2, 3, 4, ... получаем следующее:
Начиная с k = 10 число снова уменьшается.
источник