Return to Video

Teste de primalidade de Fermat

  • 0:00 - 0:03
    RKA 3 - E aí, pessoal, tudo bem?
  • 0:03 - 0:06
    Nesta aula, vamos fazer o teste
    de primalidade de Fermat.
  • 0:06 - 0:09
    Para isso, vamos determinar uma
  • 0:09 - 0:12
    série de instruções que possam provar
  • 0:12 - 0:14
    se um número inteiro de
    entrada é composto ou primo
  • 0:14 - 0:18
    com alto grau de precisão.
  • 0:18 - 0:20
    Claro, seria mais fácil calcular isso
  • 0:20 - 0:23
    em qualquer máquina.
    E mesmo que um número
  • 0:23 - 0:26
    de entrada aumente,
    isso ainda deveria
  • 0:26 - 0:29
    ser mais rápido, correto?
    Até agora nós aprendemos
  • 0:29 - 0:31
    que precisamos reconhecer um padrão
  • 0:31 - 0:34
    que todos os números primos têm.
  • 0:34 - 0:37
    E que alguns compostos não e no virgem que
  • 0:37 - 0:40
    fizemos uma demonstração visual do
  • 0:40 - 0:42
    Teorema de Fermat.
    Vimos uma regra
  • 0:42 - 0:45
    bastante interessante que era dado um
  • 0:45 - 0:48
    número primo "p" e eu inteiro a
  • 0:48 - 0:51
    que é menor do que "p".
    Sabemos que P dividir a
  • 0:51 - 0:56
    elevado up - a.
    E escrevemos isso como
  • 0:56 - 1:01
    a elevado up mod P geral se você encontra
  • 1:01 - 1:04
    o teorema desse jeito e como a equipe
  • 1:04 - 1:07
    não tem um fator comum.
    Já que "p" é primo,
  • 1:07 - 1:10
    podemos cancelar estes elementos.
  • 1:10 - 1:13
    E, às vezes, você vai encontrar escrito
  • 1:13 - 1:19
    a elevado a p - 1 = 1 mod p.
  • 1:19 - 1:21
    E lembre-se que só podemos fazer isso,
    porque o maior
  • 1:21 - 1:25
    divisor comum entre "a" e "p" é 1.
  • 1:25 - 1:27
    Agora, podemos ver uma demonstração de
  • 1:27 - 1:30
    como isso funciona.
    Para entender melhor o processo,
  • 1:30 - 1:32
    note que se você colocar um
  • 1:32 - 1:36
    número primo para o "p",
    o resultado vai ser sempre igual a 1,
  • 1:36 - 1:39
    não importa o "a"
  • 1:39 - 1:41
    que você escolha.
    Mas se colocarmos um
  • 1:41 - 1:44
    número composto para o "p",
    podemos ver que
  • 1:44 - 1:47
    normalmente o resultado não vai ser 1.
  • 1:47 - 1:50
    A maioria das vezes vai ser diferente de 1.
  • 1:50 - 1:53
    O resultado vai ser composto.
  • 1:53 - 1:55
    Isto é uma prova de que o "p"
    que escolhemos não pode ser primo.
  • 1:55 - 1:59
    Essa é essência do teste.
  • 1:59 - 2:01
    E antes de prosseguir,
    vamos construir
  • 2:01 - 2:05
    uma estrutura aqui para ele utilizando o
  • 2:05 - 2:08
    padrão que eu mostrei.
    Primeiro, nós temos
  • 2:08 - 2:10
    uma entrada que vai ser um número
  • 2:10 - 2:14
    inteiro "p".
    Depois geramos um número
  • 2:14 - 2:17
    inteiro aleatório que é menor do que o escolhido.
  • 2:17 - 2:20
    E aí, perguntamos o maior
  • 2:20 - 2:24
    divisor comum entre "a" e "p" é 1.
  • 2:24 - 2:28
    Ou seja, se o MDC entre "a" e "p"
    é maior do que 1.
  • 2:28 - 2:30
    Eles vão compartilhar de um fator comum, correto?
  • 2:30 - 2:33
    E, com isso, o "p" vai ser um
  • 2:33 - 2:36
    número composto.
    Com isso, o resultado vai
  • 2:36 - 2:39
    ser um número composto.
    Agora, se tivermos
  • 2:39 - 2:41
    Sim podemos responder à pergunta a chave
  • 2:41 - 2:46
    a elevado a p menos um modo de p = um
  • 2:46 - 2:49
    Vamos ter que "p" é composto,
  • 2:49 - 2:52
    e paramos por aqui.
    Caso contrário, se a
  • 2:52 - 2:55
    equação for igual a 1,
    "p" deve ser primo, correto?
  • 2:55 - 2:58
    E eu codifiquei essa série de
  • 2:58 - 3:00
    instruções aqui e vamos ver o que acontece.
  • 3:00 - 3:02
    E do lado esquerdo,
    nós temos o teste de Fermat.
  • 3:02 - 3:05
    Do lado direito, nós temos
  • 3:05 - 3:08
    o teste de divisão experimental.
  • 3:08 - 3:11
    Veja que parece que sempre vai dar certo.
  • 3:11 - 3:14
    Só de olhar você consegue ver que os
  • 3:14 - 3:17
    valores são sempre os mesmos,
  • 3:17 - 3:19
    não importa o valor que
    eu modifique no meu algoritmo.
  • 3:19 - 3:22
    Porém, eu encontro um problema aqui.
  • 3:22 - 3:25
    Eu coloquei o número 511 e o
  • 3:25 - 3:28
    Teorema de Fermat está dizendo que é primo.
  • 3:28 - 3:31
    Já o teste da divisão experimental,
  • 3:31 - 3:34
    diz que é composto.
    O que será que está acontecendo?
  • 3:34 - 3:37
    O 511, de fato, não é um número primo.
  • 3:37 - 3:40
    E vamos voltar aqui na
  • 3:40 - 3:42
    nossa equação e ver o que aconteceu.
  • 3:42 - 3:45
    Este é um exemplo do que chamamos de falso primo.
  • 3:45 - 3:48
    É um número composto,
    mas existem alguns
  • 3:48 - 3:51
    que escolhemos que resultam em 1.
  • 3:51 - 3:54
    E eles são chamados de enganadores.
  • 3:54 - 3:58
    Isso porque eles nos fazem pensar que a
  • 3:58 - 4:00
    resposta é um número primo.
  • 4:00 - 4:03
    O que mudando o "a",
    encontramos muitos
  • 4:03 - 4:06
    números compostos que eu
    vou chamar de testemunhas.
  • 4:06 - 4:08
    Eles não são enganadores.
  • 4:08 - 4:12
    Agora podemos utilizar a mesma lógica
  • 4:12 - 4:14
    que usamos no teste de divisibilidade,
  • 4:14 - 4:18
    onde geramos o novo "a"
    e torcemos para
  • 4:18 - 4:21
    não encontrar um enganador.
  • 4:21 - 4:24
    Agora, conseguimos ver que
    estes enganadores
  • 4:24 - 4:27
    dividem o número total do grupo que
  • 4:27 - 4:31
    estamos selecionando.
    Isso significa que
  • 4:31 - 4:34
    no máximo metade das escolhas ou
  • 4:34 - 4:37
    metade dos elementos selecionados neste grupo
  • 4:37 - 4:40
    podem ser enganadores.
    Então, desde que o "a"
  • 4:40 - 4:43
    seja encontrado aleatoriamente,
  • 4:43 - 4:46
    a chance de encontrar uma testemunha que é
  • 4:46 - 4:49
    o que queremos é pelo menos a metade.
  • 4:49 - 4:52
    E depois de ter reflexões,
    a probabilidade de que
  • 4:52 - 4:54
    nenhuma testemunha seja
  • 4:54 - 4:58
    encontrada com um número composto é no máximo 1.
  • 4:58 - 5:03
    E vai bater depois de 20 tentativas.
  • 5:03 - 5:06
    Por exemplo, a probabilidade
  • 5:06 - 5:09
    de sair um número primo erroneamente é
  • 5:09 - 5:10
    de uma em um milhão, aproximadamente.
  • 5:10 - 5:13
    É aquele caso onde
  • 5:13 - 5:17
    continuamos com uma má sorte em gerar o
  • 5:17 - 5:20
    site aleatórios.
    E toda vez encontramos
  • 5:20 - 5:23
    um enganador.
    E agora sim podemos ver
  • 5:23 - 5:26
    nosso teste em ação
    com o maior número de tentativas;
  • 5:26 - 5:29
    Parece que o teste está
  • 5:29 - 5:32
    funcionando perfeitamente, correto?
  • 5:32 - 5:34
    Note que no pior caso,
    que sabemos que é
  • 5:34 - 5:37
    quando temos um algoritmo com este primo,
  • 5:37 - 5:39
    a máquina vai ter um trabalho muito
  • 5:39 - 5:42
    grande para gerar o teste de Fermat.
  • 5:42 - 5:44
    É muito mais eficiente que a divisão experimental.
  • 5:44 - 5:47
    Principalmente, porque o
  • 5:47 - 5:49
    número de passos não aumenta com a entrada.
  • 5:49 - 5:52
    Por exemplo, graficamente
  • 5:52 - 5:55
    relacionando o tempo e o tamanho da
  • 5:55 - 5:57
    entrada vai ser algo, mais ou menos, assim.
  • 5:57 - 6:01
    Basicamente, no teste de Fermat nunca
  • 6:01 - 6:03
    temos que nos preocupar com o algoritmo
  • 6:03 - 6:06
    rodando milhões e milhões de vezes de
  • 6:06 - 6:10
    repetições como fizemos antes.
  • 6:10 - 6:12
    Então, o que eu quero dizer é
    que isso nada mais
  • 6:12 - 6:15
    é do que matemática aplicada.
  • 6:15 - 6:18
    Ou seja, pegamos um padrão
    que alguém descobriu e
  • 6:18 - 6:21
    colocamos uma grande quantidade de
  • 6:21 - 6:24
    repetições no computador,
    isso através de programação.
  • 6:24 - 6:27
    Mas, neste sistema aqui, tem
  • 6:27 - 6:29
    uma pequena falha.
    Será que você consegue encontra?
  • 6:29 - 6:31
    Eu vou deixar aqui como
  • 6:31 - 6:34
    exercício e pesquisa.
    Então, não perca tempo e
  • 6:34 - 6:37
    tente buscar a resposta.
  • 6:37 - 6:39
    E eu espero que esta
    aula tenha te ajudado e
  • 6:39 - 6:42
    até a próxima pessoal!
Title:
Teste de primalidade de Fermat
Description:

more » « less
Video Language:
Portuguese
Team:
Khan Academy
Project:
Accessibility Brazil - Do not include new videos
Duration:
06:47

Portuguese subtitles

Revisions Compare revisions