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.
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.
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.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 é.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 é.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.
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.
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.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.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!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.
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.
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 × 1853. 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.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.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 é.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
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
2. Escolha dois pontos de dados maiores que zero e menores que TestNumber1, respectivamente TestNumber2. Eles não podem ser os mesmos.
Dados1 = 1Dados2 = 23. Calcular o MMI (Mathematical Multiplicative Inverse) para TestNumber1 e TestNumber2
Calcule o IMMMMI1 = Número do Teste2 ^ -1 Número do Teste Mod1MMI2 = Número do Teste1 ^ -1 Número do Teste Mod2Apenas para primos (haverá um resultado para não primos, mas esse não é o MMI):MMI1 = (TestNumber2 ^ (TestNumber1-2)) %TestNumber1MMI2 = (Teste Número1 ^ (Teste Número-2)) % Teste Número2Assim:MMI1 = (97^33) %35MMI2 = (35^95) %974. Crie uma tabela binária para cada MMI até Log2 do Módulo
Para o MMI1F(1) = Número do Teste2 % Número do Teste1 = 97% 35 = 27F(2) = F(1) * F(1) % Número do Teste 1 = 27 * 27 % 35 = 29F(4) = F(2) * F(2) % Número do Teste 1 = 29 * 29 % 35 = 1F(8) = F(4) * F(4) % Testnumber1 = 1 * 1 % 35 = 1F(16) =F(8) * F(8) % Testnumber1 = 1 * 1 % 35 = 1F(32) = F(16) * F(16) % Número do Teste 1 = 1 * 1 % 35 = 1Calcule o logaritmo binário de Testnumber1 - 235 -2 = 33 (10001) base 2MMI1 = F(33) = F(32) * F(1) mod 35MMI1 = F(33) = 1 * 27 Mod 35MMI1 = 27Para MMI2F(1) = Número do Teste1 % Número do Teste2 = 35% 97 = 35F(2) = F(1) * F(1) % Número do Teste2 = 35 * 35 mod 97 = 61F(4) = F(2) * F(2) % Número do Teste2 = 61 * 61 mod 97 = 35F(8)= F(4) * F(4) % Número do Teste2 = 35 * 35 mod 97 = 61F(16) = F(8) * F(8) % Número do Teste2 = 61 * 61 mod 97 = 35F(32)= F(16) * F(16) % Número do Teste2 = 35 * 35 mod 97 = 61F(64)= F(32) * F(32) % Número do Teste2 = 61 * 61 mod 97 = 35F(128) = F(64) * F(64) % Número do Teste2 = 35 * 35 mod 97 = 61Calcular o logaritmo binário de TestNumber2 - 297 - 2 = 95 = (1011111) base 2MMI2 = (((((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 = 615. Calcular (Dados1 * TestNumber2 * MMI1 + Data2 *TestNumber1 * MMI2) % (TestNumber1 * TestNumber)
Resposta = (1 * 97 * 27 + 2 * 35 * 61) % (97 * 35)Resposta = (2619 + 4270) % 3395Resposta = 996. Verifique se "teste número 1" não é primo 1
Calcular (Resposta - Dados1) % Número do Teste199 -1% 35 = 28Como 28 é maior que 0, 35 não é primo7. Verifique se TestNumber2 é um número primo
Calcular (Resposta - Dados2) % Número do Teste299 - 2% 97 = 0Como 0 é igual a 0, 97 é um primo potencial8. 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
Artigos sobre o tópico "Verificar se um número é primo"