Os números primos são aqueles divisíveis apenas por si e 1; Todos os outros são chamados de números compostos. Embora existam inúmeras maneiras de testar a primalidade, há compensações. Existem testes perfeitos, mas são extremamente lentos para grandes números, enquanto muito mais rápido pode fornecer resultados falsos. Aqui estão algumas opções para escolher, dependendo de quão grande você está testando.
Parte 1
1
Teste de Divisão de Trial. Divida n por cada primo de 2 para o andar (). [1]
2
O pequeno teorema de Fermat. AVISO: Os falsos positivos são possíveis, mesmo para todos os valores de a. [2] Escolha um valor inteiro para A tais que 2 ≤ a ≤ n – 1. se um (mod n) = a (mod n), então n é provavelmente primitivo. Se isso não for verdade, n não é primo. Repita com diferentes valores de A para aumentar a confiança na primalidade
3
Teste de Miller-Rabin. AVISO: Falsos positivos são possíveis, mas raramente para vários valores de a. [3] Encontre valores para S e D, de modo que. Escolha um valor inteiro para A tais que 2 ≤ a ≤ n – 1. se ad = +1 (mod n) ou -1 (mod n), então n é provavelmente o primo. Pule para o resultado do teste. Caso contrário, vá para o próximo passo. Quadrado sua resposta (). Se isso é igual a -1 (mod n), então n é provavelmente o primo. Pule para o resultado do teste. Caso contrário, repita (etc.) até. Se você já encaixa um número que não é (mod n) e termina com +1 (mod n), então N não é o Prime. Se (mod n), então n não é primo. Resultado do teste: se n passar no teste, repita com diferentes valores de A para aumentar a confiança.
Parte 2
Entendendo o teste Prime
1
Entenda o método da divisão de teste. Pela definição de primalidade, n é apenas primitivo se não puder ser dividido uniformemente por inteiros 2 ou mais. [4] A fórmula dada economiza tempo removendo testes desnecessários (por exemplo, após o teste 3, não há necessidade de testar 9). Piso (x) rodadas x para o número inteiro mais próximo ≤ x.
2
Entenda aritmética modular. A operação “x mod y” (abreviação de “módulo”) significa “divida x por y e encontre o restante”. , chamado de módulo. Um relógio conta no módulo 12: Vai de 10 a 11 a 12 e depois volta para 1. Muitas calculadoras têm um botão Mod, mas veja o final desta seção para resolver isso manualmente para grandes números.
3
Conheça as armadilhas do pequeno teorema de Fermat. Todos os números que falham neste teste são compostos (não prime), mas infelizmente os números que passam neste teste são provavelmente primos. Se você quiser ter certeza de evitar falsos positivos, procure n em uma lista de “números de carmichael” (que passam esse teste todas as vezes) e “Fermat Pseudoprimes” (que passam neste teste apenas para alguns valores de A). [6 ]
4
Use o teste Miller-Rabin sempre que prático. Embora tedioso para executar à mão, esse teste é comumente usado no software. Isso pode ser realizado a uma velocidade prática e fornece menos falsos positivos do que o método de Fermat. [7] Um número composto nunca fornece um falso positivo para mais de ¼ dos valores de a. Se você escolher vários valores de A aleatoriamente e todos eles passam neste teste, poderá estar bastante confiante de que N é primitivo. [8]
5
Execute aritmética modular para grandes números. Se você não tiver acesso a uma calculadora com uma função de mod ou se sua calculadora não puder exibir números tão altos, use propriedades de expoentes e aritmética modular para facilitar o processo. [9] Aqui está um exemplo para o MOD 50: Reescreva a expressão com expoentes mais gerenciáveis: mod 50. (pode ser necessário dividi -lo ainda mais se calcular manualmente). mod 50 = mod 50 mod 50) mod 50. (Esta é uma propriedade da multiplicação modular.) Mod 50 = 43. Mod 50 mod 50) mod 50 = mod 50 mod 50
Parte 3
Teste do restante chinês
1
Escolha dois números. Um dos números não é primo e o segundo número é o número que precisa ser testado quanto à primalidade. “Prime1” = 35 prime2 = 97
2
Escolha dois pontos de dados maiores que zero e menor que Prime1 e Prime2 respeitosamente. Eles não podem se igualar. Data1 = 1 Data2 = 2
3
Calcule MMI (inverso multiplicativo matemático) para Prime1 e Prime2 Calcular mmi mmi1 = prime2 ^ -1 mod prime1 mmi2 = prime1 ^ -1 mod prime2 apenas para números primários (ele dará um número para números não prêmios, mas acenado ‘t seu mmi): mmi1 = (prime2 ^ (prime1-2)) % prime1 mmi2 = (prime1 ^ (prime2-2)) % prime2, por exemplo, mmi1 = (97 ^ 33) % 35 mmi2 = (35 ^ 95) % 97
4
Crie uma tabela binária para cada MMI até o log2 do módulo para mmi1 f (1) = prime2 % prime1 = 97 % 35 = 27 f (2) = f (1) * f (1) % Prime1 = 27 * 27 % 35 = 29 f (4) = f (2) * f (2) % prime1 = 29 * 29 % 35 = 1 f (8) = f (4) * f (4) % Prime1 = 1 * 1 % 35 = 1 F (16) = F (8) * F (8) % Prime1 = 1 * 1 % 35 = 1 F (32) = F (16) * F (16) % Prime1 = 1 * 1 % 35 = 1 Calcule o binário de Prime1 – 2 35 -2 = 33 (10001) base 2 mmi1 = f (33) = f (32) * f (1) mod 35 mmi1 = f (33) = 1 * 27 mod 35 mmi1 = 27 para mmi2 f (1) = prime1 % prime2 = 35 % 97 = 35 f (2) = f (1) * f (1) % prime2 = 35 * 35 mod 97 = 61 f (4) = f (2 ) * F (2) % prime2 = 61 * 61 mod 97 = 35 f (8) = f (4) * f (4) % prime2 = 35 * 35 mod 97 = 61 f (16) = f (8) * F (8) % Prime2 = 61 * 61 Mod 97 = 35 F (32) = F (16) * F (16) % Prime2 = 35 * 35 Mod 97 = 61 F (64) = F (32) * F ( 32) % Prime2 = 61 * 61 mod 97 = 35 f (128) = f (64) * f (64) % prime2 = 35 * 35 mod 97 = 61 Calcule o binário de Prime2 – 2 97 – 2 = 95 = ( 1011111) Base 2 mmi2 = (((((f (64) * f (16) % 97) * f (8) % 97) * f (4) % 97) * f (2) % 97) * f ( 1) % 97) mmi2 = ((((((35 * 35) % 97) * 61) % 97) * 35 % 97) * 61 % 97) * 35 % 97) mmi2 = 61
5
Calcule (Data1 * Prime2 * mmi1 + data2 * prime1 * mmi2) % (prime1 * prime2) Resposta = (1 * 97 * 27 + 2 * 35 * 61) % (97 * 35) Resposta = (2619 + 4270 ) % 3395 Resposta = 99
6
Verifique se “Prime1” não é o Prime Calcule (Resposta – Data1) % Prime1 99 -1 % 35 = 28 Como 28 é maior que 0, 35 não é o Prime
7
Verifique se o Prime2 é o Prime Calcule (Resposta – Data2) % Prime2 99 – 2 % 97 = 0 Como 0 é igual a 0, 97 é potencialmente primo
8
Repita as etapas 1 a 7 pelo menos mais duas vezes. Se a Etapa 7 for 0: Use um “Prime1” diferente, onde o Prime1 é um não primo, use um Prime 1 diferente, onde o Prime 1 é um primo real. Nesse caso, as etapas 6 e 7 devem ser iguais 0. Use diferentes pontos de dados para dados1 e dados2. Se a Etapa 7 for 0 toda vez, há uma probabilidade extremamente alta de que o Prime2 seja o Prime. Sabe-se que as etapas 1, embora 7 sejam falhas em certos casos em que o primeiro número é um número não prático e o segundo primo é um fator do número não prático “Prime1”. Funciona em todos os cenários em que os dois números são primos. A razão pela qual as etapas 1, embora 7 sejam repetidas, é porque existem alguns cenários em que, mesmo que o Prime1 não seja o Prime e o Prime2 não seja o Prime, a Etapa 7 ainda se esforça para zero, para um ou ambos os números. Essas circunstâncias são raras. Ao alterar o Prime1 para um número diferente de prioridade, se o Prime2 não for o Prime, o Prime2 rapidamente não será igual a zero na etapa 7. Exceto na instância em que “Prime1” é um fator de Prime2, os números primos sempre serão iguais a zero na etapa 7 .