Dado um número inteiro não negativo N
, imprima o menor número inteiro positivo ímpar que é um forte pseudoprime para todas as primeiras N
bases primárias.
Esta é a sequência O0IS A014233 .
Casos de teste (um indexado)
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
Os casos de teste para N > 13
não estão disponíveis porque esses valores ainda não foram encontrados. Se você conseguir encontrar o (s) próximo (s) termo (s) na sequência, certifique-se de enviá-lo à OEIS!
Regras
- Você pode optar por usar
N
como um valor indexado a zero ou um indexado. - É aceitável que sua solução funcione apenas para os valores representáveis no intervalo inteiro do seu idioma (até
N = 12
números inteiros de 64 bits não assinados), mas sua solução deve teoricamente funcionar para qualquer entrada, supondo que seu idioma suporte números inteiros de comprimento arbitrário.
fundo
Qualquer inteiro par positivo x
pode ser escrito na forma x = d*2^s
em que d
é estranho. d
e s
pode ser calculado dividindo repetidamente n
por 2 até que o quociente não seja mais divisível por 2. d
é esse quociente final e s
é o número de vezes que 2 divide n
.
Se um número inteiro positivo n
é primo, o pequeno teorema de Fermat declara:
Em qualquer campo finito Z/pZ
(onde p
é primo), as únicas raízes quadradas de 1
são 1
e -1
(ou, equivalentemente 1
e p-1
).
Podemos usar esses três fatos para provar que uma das duas declarações a seguir deve ser verdadeira para um primo n
(onde d*2^s = n-1
e r
é um número inteiro [0, s)
):
O teste de primalidade de Miller-Rabin opera testando o contrapositivo da reivindicação acima: se existe uma base a
tal que ambas as condições acima sejam falsas, então n
não é primo. Essa base a
é chamada de testemunha .
Agora, testar todas as bases [1, n)
seria proibitivamente caro em tempo de computação para grandes empresas n
. Existe uma variante probabilística do teste de Miller-Rabin que apenas testa algumas bases escolhidas aleatoriamente no campo finito. No entanto, foi descoberto que testar apenas a
bases primárias é suficiente e, portanto, o teste pode ser realizado de maneira eficiente e determinística. De fato, nem todas as bases principais precisam ser testadas - apenas um certo número é necessário, e esse número depende do tamanho do valor que está sendo testado para a primalidade.
Se um número insuficiente de bases primárias for testado, o teste poderá produzir falsos positivos - números inteiros compostos ímpares em que o teste falha em provar sua composição. Especificamente, se uma base a
falhar em provar a composição de um número composto ímpar, esse número será chamado de forte pseudo-tempo para a base a
. Esse desafio consiste em encontrar os números compostos ímpares que são psuedoprimes fortes para todas as bases menores ou iguais ao N
número primo (o que equivale a dizer que eles são pseudoprimes fortes para todas as bases primárias menores ou iguais ao N
número primo) .