Você está na página 1de 21

Algebra

A - Aula 01
Algoritmo da divisao de Euclides e Algoritmo
Euclideano estendido
Elaine Pimentel
Departamento de Matem
atica, UFMG, Brazil

2o Semestre - 2010

Introducao

Objetivo: estudar o metodo de criptografia de chaves p


ublicas
conhecido como RSA.
necessario o estudo de alguns conceitos de uma area da
E
matematica chamada Teoria de n
umeros.
Espera-se desenvolver o raciocnio l
ogico matematico
introduzindo metodos de prova de teoremas como inducao
matematica e demonstracao por absurdo.
um curso de matematica para cientistas da computacao.
E

Criptografia

Criptografia: estuda os metodos para codificar uma mensagem


de modo que so seu destinatario legtimo consiga interpreta-la.

Primordios: Cesar (translacao do alfabeto).

Criptoanalise: arte de decifrar c


odigos secretos.

Decodificar x Decifrar (quebrar).

Criptografia

Substituir letras por smbolos - contagem de frequencia:


I
I
I
I

vogais sao mais frequentes;


letra mais frequente: A;
monosslabo de uma letra = vogal;
consoantes mais frequentes: S e M

Metodo de contagem de frequencia de caracteres pode ser


usado para decifrar inscric
oes antigas.
I

Computadores: metodo de cifragem completamente inseguro


(polinomial).

Internet e criptografia: seguranca, assinatura.

Chave p
ublica: saber codificar nao implica saber decodificar!

Criptografia RSA
I

RSA: Rivest, Shamir, Adleman (M.I.T.) 1978.

Codificacao: basta conhecer o produto de dois primos


(n = pq). n e chamado chave p
ublica.

Decodificacao: precisamos conhecer p e q (chave de


decodificacao).

Decifrar RSA = fatoracao de n. Se n possui 150 algarismos


ou mais, fatora-lo levaria milhares de anos.
difcil determinar os fatores primos de um n
Obs: E
umero
composto, mas e possvel verificar se um n
umero e primo ou
composto sem tentar fatora-lo.

Teoria de n
umeros: parte da matematica que estuda n
umeros
inteiros.

Computacao algebrica

Chave p
ublica do RSA: multiplica-se dois primos muito
grandes.

Pascal, C: nao permitem lidar com n


umeros dessa magnitude.

Computacao algebrica: trata do calculo exato com inteiros,


fracoes, etc. Exemplo: Mathematica, Maple.

Inteiro de tamanho indeterminado: de tamanho flexvel,


grandes o suficiente. Restric
oes: tamanho da memoria,
estruturas de dados (vetores de tamanhos pre-fixados).

Inteiros = listas! Algarismos = elemento da lista; operacoes


de soma e multiplicacao: usuais, como com lapis e papel.
Divisao e mais complicado...

Algoritmos

Algoritmo = processo de calculo baseado em regras formais.

Especificacao de um algoritmo: entrada + instrucoes + sada.


Perguntas:

ao executarmos um conjunto de instruc


oes, sempre
chegaremos a um resultado? (ponto fixo)
o resultado obtido e sempre o desejado? (semantica)

Algoritmo da divisao

Objetivo: encontrar o quociente q e o resto r (sada) da


divisao entre dois inteiros positivos a e b (entrada):
a = bq + r

0 r < b.

Algoritmo da divis
ao:
Etapa 1: q = 0; r = a
Etapa 2: Se r < b, pare. Nesse caso, o quociente e q e o
resto r .
Etapa 3: Se r b, faca r := r b, q := q + 1 e volte `a
Etapa 2.

Algoritmo da divisao

Observacoes:
1. O algoritmo sempre para: sequencia decrescente de n
umeros
inteiros positivos.
2. O resultado da aplicacao do algoritmo corresponde `as
especificac
oes da sada (trivialmente).
3. O algoritmo e extremamente ineficiente, em especial se
a >> b.

Teorema da Divisao
Teorema de divis
ao: Sejam a e b inteiros positivos. Existem
n
umeros inteiros q e r tais que
0r <b

a = bq + r

Alem disso, q e r sao u


nicos.
Prova: Unicidade - Sejam q, q 0 , r , r 0 tais que
a = bq + r

0r <b

a = bq 0 + r 0

0 r0 < b

(1)
(2)

Subtraindo-se (1) de (2), obtemos:


r r 0 = b(q 0 q)
Ora, mas 0 r , r 0 < b e portanto 0 r r 0 < b. Ou seja,
0 b(q 0 q) < b
Como b > 0, temos
0 q q0 < 1
ou seja, q q 0 = 0 q = q 0 e r = r 0 .

Algoritmo Euclideano

I
I

Objetivo: Calcular o mdc entre dois n


umeros inteiros.
Definicao: o maximo divisor comum entre a e b e o n
umero d
tal que:
I
I
I

d|a (ou d e divisor de a)


d|b
se d 0 e divisor de a e b, entao d 0 |d.

Escrevemos d = mdc(a, b). Se mdc(a, b) = 1, dizemos que a


e b sao primos entre si.

Algoritmo Euclideano

Dados dois n
umeros inteiros positivos a e b tais que a b,
divide-se a por b, encontrando resto r1 . Se r1 6= 0, dividimos
b por r1 , obtendo resto r2 . Se r2 6= 0, dividimos r1 por r2 e
assim por diante.
Ou
ltimo resto diferente de zero dessa sequencia de divisoes e
o mdc(a, b).

Exemplo:
1234 54 46 8 6 2
46
8
6 2 0
Ou seja, mdc(1234, 54) = 2.

Algoritmo euclideano

Perguntas:
1. Por que o u
ltimo resto nao nulo e o mdc?
2. Por que o algoritmo para?
a
b
r1
r2

=
=
=
=

bq1 + r1
r1 q2 + r2
r2 q3 + r3
r3 q4 + r4
..
.

e
e
e
e

0 r1 < b
0 r2 < r1
0 r3 < r2
0 r4 < r3
..
.

Algoritmo euclideano

Respostas:
I

Segunda pergunta: observe que


b > r1 > r2 > . . . 0
Como essa sequencia e finita, o algoritmo sempre para. Mais
ainda, o n
umero de divis
oes efetuadas e no maximo b (por
que?).

Primeira pergunta: demonstracao do algoritmo euclideano

Demonstracao do algoritmo euclideano


Lema
Sejam a e b n
umeros inteiros positivos. Se existem inteiros g e s
tais que a = bg + s, entao mdc(a, b) = mdc(b, s).
Prova Sejam
d1 = mdc(a, b)

d2 = mdc(b, s).

Afirmamos que d1 d2 . De fato, existem inteiros positivos u e v


tais que:
a = d1 u
e
b = d1 v
Substituindo a e b na equacao a = bg + s obtemos
s = d1 u d1 vg = d1 (u vg ).

Demonstracao do algoritmo euclideano

Ou seja, d1 e um divisor comum de b e s. Mas d2 e o maior divisor


de b e s e portanto (por definicao) d1 d2 como queramos.
Seguindo um argumento semelhante, podemos provar o inverso, ou
seja, d2 d1 . Em outras palavras, d1 = d2

Demonstracao do algoritmo euclideano


Teorema
Dados a e b inteiros positivos, o u
ltimo resto diferente de zero da
sequencia de divisoes dada pelo algoritmo euclideano para a e b e
o maximo divisor comum entre a e b.
Prova
a
b
r1
r2

=
=
=
=

bq1 + r1
r1 q2 + r2
r2 q3 + r3
r3 q4 + r4
..
.

rn2 = rn1 qn

e
e
e
e

0 r1 < b
0 r2 < r1
0 r3 < r2
0 r4 < r3
..
.

rn = 0

Da u
ltima linha, temos que rn1 divide rn2 e portanto
mdc(rn1 , rn2 ) = rn1 . Aplicando sucessivamente o lema 1,
temos que mdc(a, b) = rn1 .

Algoritmo euclideano estendido


Teorema
Sejam a e b inteiros positivos e seja d o maximo divisor comum
entre a e b. Existem inteiros e tais que
a + b = d.
Exemplo: Sejam a = 1234 e b = 54. Temos que:
1234 = 54.22 + 46

ou seja,

46 = 1234 54.22

54 = 46.1 + 8

ou seja,

8 = 54 46.1

Logo,
8 = 54 46.1 = 54 (1234 54.22).1
= 54(1 + 22.1) + 1234.(1)
= 54.(23) + 1234.(1)

Algoritmo euclideano estendido

Logo,
46

8.5 + 6

= 46 8.5
= (1234 54.22) (54.(23) + 1234.(1)).5
= 1234.(6) + 54.(22 (23).5)
= 1234.(6) + 54.(137)

6.1 + 2

= 86
= (54.(23) + 1234.(1)) (1234.(6) + 54.(137)
= 1234(1 6) + 54(23 + 137)
= 1234(7) + 54(160)

E portanto, = 7 e = 160.

Algoritmo euclideano estendido

Obs. e nao sao u


nicos.
Pergunta: para que serve calcular e ?
Resposta:
I

unicidade de fatoracao de um inteiro;

RSA depende de um metodo eficiente de calculo de e .

Exerccios propostos - Captulo 1

1. Livro texto: 2 a 7.

Você também pode gostar