Враховуючи невід'ємне ціле число 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
першому першому номеру) .