Verificar se um número é primo

Números primos são números que são divisíveis apenas por eles mesmos e são chamados de 1 – outros números composto números. Quando se trata de testar se um número é primo, existem várias opções. Alguns desses métodos são relativamente simples, mas definitivamente não são práticos para números maiores. Outros testes que são frequentemente usados ​​são na verdade algoritmos completos baseados em um probabilidade que às vezes classificam erroneamente um número como primo. Continue lendo na etapa 1 para aprender como testar a si mesmo se estiver lidando com um número primo.

Degraus

Método 1 de 4: tente dividindo

Tentar dividindo é de longe a maneira mais fácil de testar um número. Para números pequenos, geralmente também é a maneira mais rápida. O teste é baseado na definição de um número primo: um número é primo se for divisível apenas por ele mesmo e 1.

Imagem intitulada Verifique se um número é primo Passo 1
1. Casal n é o número que você quer testar. Divida o número n por todos os inteiros divisíveis possíveis. Para números maiores, como n = 101, é extremamente impraticável dividir por todos os inteiros possíveis menores que n. Felizmente, existem vários truques para reduzir o número de fatores a serem testados.
Imagem intitulada Verifique se um número é primo Passo 2
2. Determine se n mesmo é. Todos os números pares são totalmente divisíveis por 2. Portanto, se n é par, você pode dizer que n é um número composto (e, portanto, não é um número primo). Para determinar rapidamente se um número é par, você só precisa prestar atenção ao último dígito. Se o último dígito for 2, 4, 6, 8 ou 0, então o número é par e não primo.
  • A única exceção a essa regra é o próprio número 2, que, por ser divisível por ele mesmo e por 1, também é primo. 2 é o único número primo par.
  • Imagem intitulada Verifique se um número é primo Passo 3
    3. Papel n por qualquer número entre 2 e n-1. Como um número primo não tem outros fatores além de si mesmo e 1 e como os fatores de inteiros são menores que seu produto, verificar a divisibilidade de um inteiro menor que n e maior que 2 determinará se n é primo. Começamos depois de 2 porque números pares (múltiplos de 2) não podem ser primos. Isso está longe de ser uma maneira eficiente de testar, como você verá abaixo.
  • Por exemplo, se quiséssemos usar este método para testar se 11 é primo ou não, teríamos que dividir 11 por 3, 4, 5, 6, 7, 8, 9 e 10, sempre procurando uma resposta inteira sem resto. Como nenhum desses números se encaixa completamente em 11, podemos dizer que 11 é um primo é.
  • Imagem intitulada Verifique se um número é primo Passo 4
    4. Para economizar tempo, teste apenas até sqrt(n), arredondado. Testar um número n verificando todos os números entre 2 e n-1 pode rapidamente se tornar muito demorado. Por exemplo, se quiséssemos verificar se 103 é primo usando este método, teríamos que dividir por 3, 4, 5, 6, 7 ... etc., todo o caminho para 102! Felizmente não é necessário testar assim. Na prática só é necessário testar pelos fatores entre 2 e a raiz quadrada de n. Se a raiz quadrada de n não for um número, arredonde para o inteiro mais próximo e teste para esse número. Veja abaixo uma explicação:
  • Vamos examinar os fatores de 100. 100 = 1 × 100, 2 × 50, 4 × 25, 5 × 20, 10 × 10, 20 × 5, 25 × 4, 50 × 2 e 100 × 1. Observe que depois de 10 × 10, os fatores são os mesmos de 10 × 10, apenas invertidos. Em geral, podemos ignorar os fatores de n maiores que sqrt(n) porque eles são simplesmente uma continuação de fatores menores que sqrt(n).
  • Vamos tentar um exemplo. Se n = 37, não precisamos testar todos os números de 3 a 36 para determinar se n é primo. Em vez disso, só precisamos olhar para os números entre 2 e sqrt(37) (arredondado para cima).
  • sqrt(37) = 6.08 – vamos arredondar para 7.
  • 37 não é totalmente divisível por 3, 4, 5, 6 e 7 e, portanto, podemos dizer com confiança que é um número primo é.
  • Imagem intitulada Verifique se um número é primo Passo 5
    5. Para economizar ainda mais tempo, usamos apenas fatores primos. É possível tornar o processo de teste por divisão ainda mais curto, não incluindo aqueles fatores que não são primos. Por definição, qualquer número composto pode ser expresso como o produto de dois ou mais números primos. Portanto, dividir o número n por um número composto é desnecessário - isso é equivalente a dividir por primos várias vezes. Assim, podemos restringir ainda mais a lista de fatores possíveis para apenas números primos menores que sqrt(n).
  • Isso significa que todos os fatores pares, bem como aqueles que são múltiplos de números primos, podem ser ignorados.
  • Por exemplo, vamos tentar determinar se 103 é primo ou não. A raiz quadrada de 103 é 11 (arredondado para cima). Os números primos entre 2 e 11 são 3, 5, 7 e 11. 4, 6, 8 e 10 são pares e 9 é um múltiplo de 3, um número primo, então podemos pular este. Ao fazer isso, reduzimos nossa lista de possíveis fatores para apenas 4 números!
  • 103 não é totalmente divisível por 3, 5, 7 ou 11, então agora sabemos que 103 é um número primo é.
  • Método 2 de 4: Usando o pequeno teorema de Fermat

    Em 1640, o matemático francês Pierre de Fermat postulou pela primeira vez um teorema (que agora leva seu nome) que pode ser muito útil para determinar se um número é primo ou não. Tecnicamente, o teste de Fermat serve para verificar se um número é composto, em vez de primo. Isso porque o teste com "certeza absoluta" pode mostrar que um número é composto, mas apenas um "probabilidade" se um número é primo. O pequeno teorema de Fermat é útil em situações em que tentar dividir por não é prático e quando uma lista de números está disponível que são exceções ao teorema.

    Imagem intitulada Verifique se um número é primo Passo 6
    1. Suponha n o número é para teste. Você usa este teste para determinar se um determinado número n é primo. Mas, como mencionado acima, este teorema pode ocasionalmente caracterizar erroneamente certos compostos como números primos. É importante levar isso em consideração e verificar sua resposta, que será explicada posteriormente.
    Imagem intitulada Verifique se um número é primo Passo 7
    2. Escolha um número inteiro uma entre 2 e n-1 (inclusive). O número inteiro exato que você escolhe não é importante. Como os parâmetros para a incluem 2 e n-1, você também pode usar esses.
  • Um exemplo: 100 é um número primo ou não?. Suponha que tomemos 3 como valor de teste - este está entre 2 e n-1, de modo que é suficiente.
  • Imagem intitulada Verifique se um número é primo Passo 8
    3. calcular uma (mod n). Trabalhar essa expressão requer algum conhecimento de um sistema matemático chamado matemática modular. Na matemática modular, os números voltam a zero ao atingir um determinado valor, conhecido como módulo. Você pode pensar nisso como um relógio: eventualmente, o ponteiro do relógio voltará para 1h depois das 12h, não para 1h. O módulo é indicado como (mod n). Então, nesta etapa, você calcula com um módulo de n.
  • Outro método é calcular a e depois dividi-lo por n, após o que você usa o resto como sua resposta. Calculadoras especializadas com função de módulo podem ser muito úteis ao dividir números grandes, pois podem calcular diretamente o restante de uma divisão.
  • Usando essa calculadora em nosso exemplo, podemos ver que 3/100 tem um resto de 1. Então, 3 (mod 100) é 1.
  • Imagem intitulada Verifique se um número é primo Passo 9
    4. Se calcularmos isso à mão, usamos o expoente como notação curta. Se você não tiver uma calculadora com uma função de módulo, use a notação exponencial para facilitar o procedimento de determinação do resto. Ver abaixo:
  • Em nosso exemplo, calculamos 3 com um módulo de 100. 3 é um número muito, muito grande - 515.377.520.732.011.331.036.461.129.765.621.272.702.107.522.001 - tão grande que se torna muito difícil trabalhar com ele. Em vez de usar a resposta de 48 dígitos para 3, é melhor escrevê-la como um expoente, então (((((((3)*3))))*3)). Lembre-se que tomar o expoente de um expoente dá o efeito de multiplicar os expoentes ((x) = x).
  • Agora podemos determinar o resto. Comece a resolver para (((((((3)*3))))*3)) no conjunto interno de parênteses e trabalhe para fora, dividindo cada passo por 100. Assim que encontrarmos o resto, usaremos isso para a próxima etapa em vez de como a resposta real. Ver abaixo:
  • (((((((9)*3)))*3)) - 9/100 não tem resto, então podemos continuar.
  • ((((((27))))*3)) - 27/100 não tem resto, então podemos continuar.
  • (((((729)))*3)) - 729/100 = 7 R 29. Nosso restante é 29. Passamos para o próximo passo, não 729.
  • ((((29=841))*3)) - 841/100 = 8 R 41. Usaremos nosso restante 41 novamente na próxima etapa.
  • (((41 = 1681)*3)) - 1681/100 = 16 R 81. Usaremos nosso restante 81 na próxima etapa.
  • ((81*3 = 243)) - 243/100 = 2 R 43. Usaremos nosso restante 43 na próxima etapa.
  • (43 = 1849) - 1849/100 = 18 R 49. Usaremos nosso restante 49 na próxima etapa.
  • 49 = 2401 - 2401/100 = 24 R 1. nosso resto final é 1. Em outras palavras, 3 (mod 100) = 1. Observe que esta é a mesma resposta que calculamos na etapa anterior!
  • Imagem intitulada Verifique se um número é primo Passo 10
    5. Verifique se uma (mod n) = uma (mod n). Se não, então n é composto. Se for verdade, então n é provavelmente, (mas não tenho certeza) um número primo. Repetir o teste com valores diferentes para a pode tornar o resultado mais certo, mas são raros os números compostos que satisfazem o teorema de Fermat para tudo valores de um. Estes são chamados de números de Carmichael - o menor desses números é 561.
  • Em nosso exemplo, 3 (mod 100) = 1 e 3 (mod 100) = 3. 1 ≠ 3, então podemos dizer que 100 é um número composto.
  • 6. Use os números de Carmichael para ter certeza do seu resultado. Saber quais números satisfazem a sequência de Carmichael antes de continuar pode poupar muitas dores de cabeça sobre se um número é primo ou não. Em geral, os números de Carmichael são o produto de primos individuais, onde para todos os primos, se p é um divisor de n, então p-1 também é um divisor de n-1. A lista online de números de Carmichael pode ser muito útil para determinar se um número é primo usando o pequeno teorema de Fermat.

    Método 3 de 4: Usando o teste de Miller-Rabin

    O teste de Miller-Rabin funciona da mesma forma que o pequeno teorema de Fermat, mas lida melhor com números anômalos, como os números de Carmichael.

    Imagem intitulada Verifique se um número é primo Passo 12
    1. Casal n é um número ímpar que queremos testar quanto à primalidade. Como nos métodos indicados acima, n é a variável que queremos determinar a primalidade de.
    Imagem intitulada Verifique se um número é primo Passo 13
    2. Ocupado n-1 desconto na forma 2 × d através do qual d é estranho. O número n é primo se for ímpar. Então n - 1 deve ser par. Como n - 1 é par, pode ser escrito como uma potência de 2 vezes um número ímpar . Então,4 = 2 × 1; 80 = 2 × 5; e assim por diante.
  • Suponha que queremos determinar se n = 321 é um número primo. 321 - 1 = 320, que podemos expressar como 2×5.
  • Neste caso n = 321 é um número adequado. Determinar n – 1 para n = 371 pode exigir um valor grande para d, o que torna todo o processo mais difícil em um estágio posterior. 371 - 1 = 370 = 2 × 185
  • Imagem intitulada Verifique se um número é primo Passo 14
    3. Escolha qualquer número uma entre 2 e n-1. O número exato que você escolher não importa - apenas que deve ser menor que n e maior que 1.
  • Em nosso exemplo com n = 321, escolhemos a = 100.
  • Imagem intitulada Verifique se um número é primo Passo 15
    4. calcular uma (mod n). E se uma = 1 ou -1 (mod n), então resisten o teste de Miller-Rabin e é provavelmente um número primo. Assim como o Pequeno Teorema de Fermat, este teste não pode determinar a primalidade de um número com certeza absoluta, mas precisa de testes adicionais para fazê-lo.
  • Em nosso exemplo com n = 321, a (mod n) = 100 (mod 321). 100 = 10.000.000.000 (mod 321) = 313. Usamos uma calculadora especial, ou o método abreviado com um expoente, conforme descrito anteriormente, para encontrar o resto de 100/321.
  • Como não obtivemos 1 ou -1, não podemos dizer com certeza que n é primo. Mas há mais que precisamos fazer - continue lendo.
  • Imagem intitulada Verifique se um número é primo Passo 16
    5. Como o resultado não é igual a 1 ou -1, calculeuma, uma,... e assim por diante, até umad. Calcule a elevado a d vezes, até 2. Se um deles for igual a 1 ou -1 (mod n), então resiste n o teste de Miller-Rabin e provavelmente é primordial. Depois de determinar que n passou no teste, verifique sua resposta (veja a etapa abaixo). Se n não passar em nenhum desses testes, então é um composto número.
  • Como lembrete, em nosso exemplo, o valor de a é igual a 100, o valor de s é 6 e de d5. Prosseguiremos com os testes conforme indicado abaixo:
  • 100 = 1×10.
  • 1×10 (mod 321) = 64. 64 ` 1 ou -1. Fique calmo.
  • 100 = 1×10.
  • 1×10 (mod 321) = 244. 244 1 ou -1.
  • Neste ponto podemos parar. s - 1 = 6 - 1 = 5. Chegamos agora a 4d = 2, e não há potências de 2 vezes d sob 5d. Como nenhum de nossos cálculos deu 1 ou -1 como resposta, podemos dizer que n = 321 a composto número é.
  • Imagem intitulada Verifique se um número é primo Passo 17
    6. E se n atende ao teste de Miller-Rabin, depois repita para os demais valores de uma. Se você descobriu que o valor de n pode ser primo, tente novamente com um valor aleatório diferente para a para confirmar o resultado do teste. Se n for realmente primo, isso valerá para qualquer valor de a. Se n for um número composto, ele falhará por três quartos dos valores de um. Isso lhe dá mais certeza do que com o Pequeno Teorema de Fermat, no qual certos números compostos (os números de Carmichael) passam no teste para cada valor de um.

    Método 4 de 4: Usando o teorema chinês do resto

    Imagem intitulada Verifique se um número é primo Passo 18
    1. Escolha dois números. Um dos números não é primo e o segundo é o número que está sendo testado quanto à primalidade.
    • "teste número 1" = 35
    • Teste número2 = 97
    Imagem intitulada Verifique se um número é primo Passo 19
    2. Escolha dois pontos de dados maiores que zero e menores que TestNumber1, respectivamente TestNumber2. Eles não podem ser os mesmos.
  • Dados1 = 1
  • Dados2 = 2
  • Imagem intitulada Verifique se um número é primo Passo 20
    3. Calcular o MMI (Mathematical Multiplicative Inverse) para TestNumber1 e TestNumber2
  • Calcule o IMM
  • MMI1 = Número do Teste2 ^ -1 Número do Teste Mod1
  • MMI2 = Número do Teste1 ^ -1 Número do Teste Mod2
  • Apenas para primos (haverá um resultado para não primos, mas esse não é o MMI):
  • MMI1 = (TestNumber2 ^ (TestNumber1-2)) %TestNumber1
  • MMI2 = (Teste Número1 ^ (Teste Número-2)) % Teste Número2
  • Assim:
  • MMI1 = (97^33) %35
  • MMI2 = (35^95) %97
  • Imagem intitulada Verifique se um número é primo Passo 21
    4. Crie uma tabela binária para cada MMI até Log2 do Módulo
  • Para o MMI1
  • F(1) = Número do Teste2 % Número do Teste1 = 97% 35 = 27
  • F(2) = F(1) * F(1) % Número do Teste 1 = 27 * 27 % 35 = 29
  • F(4) = F(2) * F(2) % Número do Teste 1 = 29 * 29 % 35 = 1
  • F(8) = F(4) * F(4) % Testnumber1 = 1 * 1 % 35 = 1
  • F(16) =F(8) * F(8) % Testnumber1 = 1 * 1 % 35 = 1
  • F(32) = F(16) * F(16) % Número do Teste 1 = 1 * 1 % 35 = 1
  • Calcule o logaritmo binário de Testnumber1 - 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) = Número do Teste1 % Número do Teste2 = 35% 97 = 35
  • F(2) = F(1) * F(1) % Número do Teste2 = 35 * 35 mod 97 = 61
  • F(4) = F(2) * F(2) % Número do Teste2 = 61 * 61 mod 97 = 35
  • F(8)= F(4) * F(4) % Número do Teste2 = 35 * 35 mod 97 = 61
  • F(16) = F(8) * F(8) % Número do Teste2 = 61 * 61 mod 97 = 35
  • F(32)= F(16) * F(16) % Número do Teste2 = 35 * 35 mod 97 = 61
  • F(64)= F(32) * F(32) % Número do Teste2 = 61 * 61 mod 97 = 35
  • F(128) = F(64) * F(64) % Número do Teste2 = 35 * 35 mod 97 = 61
  • Calcular o logaritmo binário de TestNumber2 - 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
  • Imagem intitulada Verifique se um número é primo Passo 22
    5. Calcular (Dados1 * TestNumber2 * MMI1 + Data2 *TestNumber1 * MMI2) % (TestNumber1 * TestNumber)
  • Resposta = (1 * 97 * 27 + 2 * 35 * 61) % (97 * 35)
  • Resposta = (2619 + 4270) % 3395
  • Resposta = 99
  • Imagem intitulada Verifique se um número é primo Passo 23
    6. Verifique se "teste número 1" não é primo 1
  • Calcular (Resposta - Dados1) % Número do Teste1
  • 99 -1% 35 = 28
  • Como 28 é maior que 0, 35 não é primo
  • Imagem intitulada Verifique se um número é primo Passo 24
    7. Verifique se TestNumber2 é um número primo
  • Calcular (Resposta - Dados2) % Número do Teste2
  • 99 - 2% 97 = 0
  • Como 0 é igual a 0, 97 é um primo potencial
  • Imagem intitulada Verifique se um número é primo Passo 25
    8. Repita os passos 1 a 7 pelo menos mais duas vezes.
  • Se o passo 7 for igual a 0:
  • Usar outro "teste número 1" se TestNumber1 não for primo.
  • Use outro TestNumber1 onde um TestNumber1 é na verdade um número primo.Neste caso, os passos 6 e 7 são iguais a 0.
  • Use pontos de dados diferentes para data1 e data2.
  • Se o passo 7 for sempre igual a 0, então a probabilidade de que number2 seja primo é muito alta.
  • Os passos 1 a 7 são conhecidos por serem incorretos em certos casos quando o primeiro número não é primo e o segundo é um fator primo do número não primo "teste número 1".Funciona em todos os cenários em que ambos os números são primos.
  • A razão pela qual as etapas de 1 a 7 são repetidas é porque existem alguns cenários em que, mesmo que TestNumber1 não seja primo e TestNumber2 não seja primo, qualquer número da Etapa 7 ainda é zero.Essas condições são raras.Ao alterar TestNumber1 para outro número não primo, se TestNumber2 não for primo, TestNumber2 não será mais igual a zero, na etapa 7. Com exceção do caso em que "teste número 1" é um fator de TestNumber2, os números primos sempre serão zero na etapa 7.
  • Pontas

    • Os 168 primos abaixo de 1000 são: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79 , 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211 , 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359 , 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509 , 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673 , 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853 , 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
    • Quando tentar dividir é mais lento que os métodos mais sofisticados, ainda é eficiente para números menores. Mesmo ao testar números maiores, não é incomum verificar os números pequenos primeiro antes de mudar para os métodos mais avançados.

    Necessidades

    • Papel, caneta, lápis e/ou calculadora para exercícios

    Оцените, пожалуйста статью