Algoritimos
Transcript of Algoritimos
Algoritimos
Usando os exemplos do capitulo 1 onde falamos sobre Métodos de fatoração, vamos aqui colocar algoritimos feitos na linguagem de programação JAVA e mostrar como cada um deles se comporta numa máquina de arquitetura comum.
O Primeiro exemplo é a simples verificação de divisibilidade:
Imagem 1 – Divisibilidade em JAVA
Imagem 2 – Colocanco o valor do dividendo 10
Imagem 3 – Colocando o valor do divisor 5
Imagem 4 – Mostrando a divisibilidade entre o dividendo 10 e o divisor 5.
Imagem 5 - Colocanco o valor do dividendo 15
Imagem 6 – Colocando o valor do divisor 7
Imagem 7 – Mostrando a divisibilidade entre o dividendo 15 e o divisor 7.
Como mostrado nos exemplos acima, o algoritimo faz o calculo de divisibilidade entre dividendo e divisor. Nos exemplos foram testados a divisibilidade entre os numeros 10 e 5, o que ocasionou numa divisibilidade positiva, e entre 15 e 7, uma divisibilidade negativa.
No exemplo a seguir demonstraremos como verificamos se um numero é primo ou não.
Imagem 8 – Primalidade em JAVA
Imagem 9 – Verificando a primalidade do número 8
Imagem 10 – Primalidade do número 8.
Imagem 11 – Verificando a primalidade do número 23
Imagem 12 – Primalidade do número 23
No exemplo acima testamos a primalidade verificando todos os numeros abaixo do inserido que são divisiveis pro ele. Ao excluirmos o numero 1 e ele mesmo do vetor sabemos se ele é ou não primo verificando se o vetor está vazio. Pois os numeros primos não possuem outros divisores além do proprio numero e 1.
No caso testamos a primalidade dos numeros 8 e 23, o primeiro sendo um numero não-primo e o segundo sendo primo.
A seguir temos um algoritmo que fatora os números inseridos:
Imagem 13 – Fatoração em JAVA parte 1
Imagem 14 – Fatoração em JAVA parte 2
Imagem 15 – Fatoração em JAVA parte 3
Imagem 16 – Inserindo o número 23
Imagem 17 – Mostrando que o número 23 é Primo e não haverá fatoração
Imagem 18 – Inserindo o número 20
Imagem 19 – Mostrando a fatoração do número 20
Imagem 20 – Inserindo o número 200.000
Imagem 21 – Mostrando a fatoração do numero 200.000
Vale salientar que no algoritmo de fatoração fizemos uma verificação com números grandes e barramos a inserção de números maiores que 200 mil, pois o processamento do computador demora mais de acordo com o tamanho do número. Com o número 200 mil a máquina demorou em média 15 segundos a processar a fatoração.
Abaixo está um algoritimo que fatora os numeros de acordo com o método de Fermat.
Imagem 22 – Método de fatoração por Fermat em JAVA
Imagem 23 – Inserindo o número 369852
Imagem 24 – Mostrando a fatoração por Fermat do número 369852
Imagem 25 – Inserindo o número 345
Imagem 26 – Mostrando a fatoração por Fermat do número 345
O exemplo acima mostra a fatoração de números pleo método de Fermat, que não fatora pelo produto de números primos, mas pelo produto de dois outros números.
Abaixo temos um exemplo de como a criptografia RSA funciona:
Imagem 27 – O algoritimo RSA em JAVA parte 1
Imagem 28 – O algoritmo RSA em JAVA parte 2
Imagem 29 – O algoritmo RSA em JAVA parte 3
Imagem 30 – O algoritimo RSA em JAVA parte 4
Imagem 31 – O algoritmo RSA em JAVA parte 5
Imagem 32 – Inserindo a frase “O algoritmo de Shor”
Imagem 33 – Inserindo valor de p = 11
Imagem 34 – Inserindo o valor de q = 17
Imagem 35 – Mostrando o resultado da criptografia e descriptografia em RSA para a frase “O algoritimo de Shor”
Imagem 36 – Inserindo a frase “RSA e Peter Shor”
Imagem 37 – Inserindo o valor de p = 5
Imagem 38 – Inserindo o valor de q = 13
Imagem 39 – Mostrando o resultado da criptografia e descriptografia em RSA para a frase “RSA e Peter Shor”