Если задано неотрицательное целое число N
, выведите наименьшее нечетное положительное целое число, являющееся сильным псевдослучестным, для всех первых N
простых оснований.
Это последовательность OEIS A014233 .
Тестовые случаи (одноиндексированные)
1 2047
2 1373653
3 25326001
4 3215031751
5 2152302898747
6 3474749660383
7 341550071728321
8 341550071728321
9 3825123056546413051
10 3825123056546413051
11 3825123056546413051
12 318665857834031151167461
13 3317044064679887385961981
Контрольные примеры для N > 13
недоступны, поскольку эти значения еще не найдены. Если вам удастся найти следующие термины в последовательности, обязательно отправьте их / их в OEIS!
правила
- Вы можете выбрать значение
N
с нулевым или одним индексом. - Для вашего решения приемлемо работать только для значений, представляемых в целочисленном диапазоне вашего языка (например,
N = 12
для 64-разрядных целых чисел без знака), но ваше решение теоретически должно работать для любого ввода с допущением, что ваш язык поддерживает целые числа произвольной длины.
Фон
Любое положительное четное целое число x
может быть записано в форме, x = d*2^s
где d
нечетно. d
и s
может быть вычислено путем многократного деления n
на 2 до тех пор, пока частное не перестанет делиться на 2. d
Является ли это конечное частное и s
числом, когда 2 делит n
.
Если натуральное число n
является простым, то маленькая теорема Ферма утверждает:
В любом конечном поле Z/pZ
(где p
есть простое число) единственными квадратными корнями 1
являются 1
и -1
(или, что эквивалентно, 1
и p-1
).
Мы можем использовать эти три факта, чтобы доказать, что одно из следующих двух утверждений должно быть истинным для простого числа n
(где d*2^s = n-1
и r
является некоторым целым числом [0, s)
):
Тест на примитивность Миллера-Рабина работает путем проверки контрапозитива по приведенному выше утверждению: если существует основание a
, в котором оба вышеуказанных условия являются ложными, то n
это не простое число. Эта база a
называется свидетелем .
Теперь тестирование каждой базы [1, n)
было бы непомерно дорогим по времени вычислений для больших n
. Существует вероятностный вариант теста Миллера-Рабина, который проверяет только некоторые случайно выбранные базы в конечном поле. Однако было обнаружено, что тестирование только простых a
оснований является достаточным, и, таким образом, тест может быть выполнен эффективным и детерминистическим способом. В действительности, не все основные основания должны быть проверены - требуется только определенное число, и это число зависит от размера значения, проверяемого на первичность.
Если тестируется недостаточное количество простых базисов, тест может давать ложноположительные значения - нечетные составные целые числа, когда тест не может доказать их составность. В частности, если основание a
не может доказать композицию нечетного составного числа, это число называется сильным псевдослучайным к основанию a
. Эта задача состоит в том, чтобы найти нечетные составные числа, которые являются сильными псевдопримерами для всех оснований, меньших или равными первому N
числу (что эквивалентно тому, чтобы сказать, что они являются сильными псевдопримями для всех простых оснований, меньших или равными N
первому числу) ,