Escolar Documentos
Profissional Documentos
Cultura Documentos
Teoria de Números e Criptografia RSA Elaine Pimentel PDF
Teoria de Números e Criptografia RSA Elaine Pimentel PDF
Bibliografia e refer
encias
Introdu
c
ao
2.1
Criptografia
2.2
Criptografia RSA
2.3
Computac
ao alg
ebrica
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 c
alculo exato com inteiros, fracoes, etc.
Exemplo: Mathematica, Maple.
Inteiro de tamanho indeterminado: de tamanho flexvel, grandes o suficiente. Restricoes: tamanho da mem
oria, 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. Divis
ao e mais complicado...
Algoritmo da divis
ao de Euclides
3.1
Algoritmos
Algoritmo = processo de c
alculo baseado em regras formais.
Especificacao de um algoritmo: entrada + instrucoes + sada.
Perguntas:
ao executarmos um conjunto de instrucoes, sempre chegaremos a um
resultado? (ponto fixo)
o resultado obtido e sempre o desejado? (sem
antica)
3.2
Algoritmo da divis
ao
0 r < b.
Algoritmo da divis
ao:
Etapa 1: q = 0; r = a
3.3
Teorema da Divis
ao
a = bq + r
Alem disso, q e r s
ao u
nicos.
Prova
0r<b
a = bq + r
0 r < b
(1)
(2)
3.4
Algoritmo Euclideano
entre a e b e o n
umero d tal
54
8
46
6
8
2
6
0
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
..
.
3.5
Demonstrac
ao do algoritmo euclideano
Lema 2 Sejam a e b n
umeros inteiros positivos. Se existem inteiros g e s tais
que a = bg + s, ent
ao mdc(a, b) = mdc(b, s).
Prova
Sejam
d1 = mdc(a, b)
d2 = mdc(b, s).
eb = d1 v
=
=
=
=
bq1 + r1
r1 q2 + r2
r2 q3 + r3
r3 q4 + r4
..
.
= 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 2, temos que mdc(a, b) = rn1 .
3.6
O resultado que mais vamos usar durante o curso sobre mdc e o seguinte:
Teorema 4 Sejam a e b inteiros positivos e seja d o m
aximo divisor comum
entre a e b. Esxistem inteiros e tais que
.a + .b = d.
Para demonstracao desse teorema, veja o livro texto, pag 29-31.
Vamos ilustrar a demonstracao atraves de um exemplo numerico:
6
ou seja,
46 = 1234 54.22
ou seja,
8 = 54 46.1
= 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)
3.7
Exerccios propostos
Fatorac
ao u
nica
4.1
Teorema da fatorac
ao u
nica
Dizemos que um n
umero inteiro positivo p e primo
divisores de p sao p e 1.
se p 6= 1 e os u
nicos
Se um n
umero inteiro positivo (diferente de 1) nao e primo, entao ele e chamado
de composto .
Teorema 5 (Teorema da fatora
c
ao u
nica) Dado um inteiro positivo n 2
podemos sempre escreve-lo, de maneira u
nica, na forma:
n = pe11 . . . . .pekk
onde 1 < p1 < p2 < . . . < pk s
ao n
umeros primos e e1 , . . . , ek s
ao inteiros
positivos (multiplicidades).
4.2
Exist
encia da fatorac
ao
Algoritmo ing
enuo: Dado n 2 inteiro positivo, tente dividir n por cada um
dos inteiros de 2 a n 1. Se algum desses inteiros (digamos k) dividir n, entao
achamos um fator de n.
Perguntas:
1. k e primo ou composto?
2. Quando se deve parar a busca? Em n 1?
Respostas:
1. k e primo. De fato, suponhamos k composto. Logo, k = a.b com 1 <
a, b < k. Como k divide n, existe (por definicao) c inteiro tal que n = k.c.
Logo,
n = a.b.c
ou seja, a e b sao fatores de n menores que k, o que contraria a hipotese
da minimalidade de k. Logo, k e primo.
algoritmo ao n
umero qn1 , determinando q2 , o segundo fator primo de n. Para
determinar o terceiro fator primo q3 , aplicamos o algoritmo ao n
umero q1n.q2 e
n
assim por diante, ate chegarmos em q1 .q2 .....qs1 = qs , com qs primo. Observe
que q1 q2 . . . qs1 qs e
n>
n
n
n
>
> ... >
> 0,
q1
q1 .q2
q1 .q2 . . . . .qs
4.3
Efici
encia do algoritmo ing
enuo de fatorac
ao
ineficiente!
Exemplo 3 Seja n um
umero primo com 100 ou mais algarismos. Logo,
n
n 10100 e portanto n 1050 . Logo temos que executar pelo menos 1050
loops para determinar que n e primo. Suponhamos que o nosso computador
50
40
segundos, ou
execute 1010 divis
oes por segundo. Logo levaremos 10
1010 = 10
seja, 1031 anos na frente da tela do computador aguardando... Observe que o
tempo estimado de existencia do universo e 1011 anos!
importante ressaltar que n
O algoritmo e bom para n
umeros pequenos. E
ao
existe (atualmente) algoritmo de fatora
c
ao eficiente para todos os
inteiros . Disso depende a seguranca do RSA!
Nao se sabe, entretanto, se tal algoritmo nao existe mesmo ou se nao fomos
espertos o suficiente para inventa-lo...
4.4
Fatorac
ao por Fermat
n.
x=
n + y2 >
x2 n.
Etapa 3: Repita a etapa 2 ate encontrar um valor inteiro para y, ou ate que x = n+1
2 .
No primeiro caso, n tem fatores x + y e x y; no segundo, n e primo.
Exemplo 4 Seja n = 1342127. Temos que x = 1158. Mas
x2 = 11582 = 1340964 < 1342127
Logo, passamos a incrementar x ate que
p
x2 n
seja inteiro ou x =
n+1
2 ,
x2 n
x
1159
33, 97
1160
58, 93
1161
76, 11
1162
90, 09
1163
102, 18
1164
113
1+n
2
y=
n1
2
como queramos.
Veja a demonstracao completa do algoritmo no livro texto, paginas 41 a 43.
Observa
c
ao: Esse algoritmo diz algo importante sobre o RSA. Se escolhermos
p e q muito proximos, entao n = p.q e facilmente fatoravel pelo algoritmo de
Fermat.
4.5
2. Se a e b dividem c ent
ao o produto a.b divide c.
Prova mdc(a, b) = 1. Pelo Algoritmo euclideano estendido, existem e
tais que
.a + .b = 1
Entao,
.a.c + .b.c = c
Como b divide a.c pela hipotese (1) e como b divide .b.c, entao b divide c.
Para provar a segunda afirmativa, se a divide c, podemos escrever c = at para
algum inteiro t. Mas b tambem divide c. Como mdc(a, b) = 1, pela afirmacao
(1), b divide t. Logo, t = b.k para algum inteiro k e portanto,
c = a.t = a.b.k
4.6
Unicidade
. . . . .qsrs
onde m e um n
umero menor que n que apresenta duas fatoracoes distintas.
ABSURDO pois isso contraria a minimalidade de n.
11
4.7
Exerccios propostos
p e um n
umero irracional.
N
umeros primos
Ate agora:
propriedades basicas dos n
umeros inteiros;
dois algoritmos fundamentais;
Nessa secao, discutiremos metodos ingenuos para encontrar primos.
5.1
F
ormulas Polinomiais
Considere o polinomio:
f (x) = an .xn + an1 .xn1 + . . . + a1 .x + a0
onde an , an1 , . . . , a1 , a0 sao n
umeros inteiros e que satisfaz a condicao:
f (m) e primo, para todo inteiro positivo m
Exemplo 5 Seja f (x) = x2 + 1 Logo,
x
1
2
3
4
5
6
7
8
9
2
f (x)
2
5
10
17
26
37
50
65
82
5
b 2am
a.p
5.2
F
ormulas exponenciais: n
umeros de Mersenne
umeros de Mersenne
N
onde n e um inteiro n
ao negativo.
N
umeros perfeitos sao aqueles iguais `a metade da soma de seus divisores. Ex: 6 = 12/2 e 12 = 1 + 2 + 3 + 6
13
5.3
F
ormulas exponenciais: n
umeros de Fermat
N
umeros de Fermat
F (n) = 22 + 1
onde n e um inteiro n
ao negativo.
Exemplos de n
umeros de Fermat primos: n = 0, 1, 2, 3, 4. F (5) = 18446744073709551617
e composto!
Poucos primos de Fermat sao conhecidos.Ate hoje, nao se descobriu nenhum F (n) primo com n 5.
5.4
F
ormulas fatoriais
14
5.5
Infinidade de primos
5.6
Crivo de Erat
ostenes
n...
5.7
Crivo de Erat
ostenes revisado
n1
2
(P 1)
2
Etapa 4: Atribua o valor P 2 a uma nova variavel T ; substitua por zero o valor da
posicao (T 1)
e incremente T de 2P ; repita ate que T > n; incremente P
2
de 2 e volte `a Etapa 2.
15
5.8
Exerccios propostos
Aritm
etica modular
6.1
Relac
oes de equival
encia
6.2
Inteiros m
odulo n
23 1
(mod 11)
Observa
c
ao: Congruencia m
odulo n e uma relacao de equivalencia:
a a (mod n) (trivialmente)
Se a b (mod n), entao a b e m
ultiplo de n. Mas b a = (a b);
logo, b a tambem e m
ultiplo de n. Portanto b a (mod n).
Transitividade: exerccio.
Chamamos de Zn o conjunto de inteiros m
odulo n. Ou seja, se a Z, entao
a = {a + kn | k Z}
ultiplos de n.
Em particular, 0 e o conjunto dos m
Voltemos agora ao algoritmo da divisao de Euclides. Vimos que, dados a e n
inteiros positivos, a > n, existem inteiros q e r tais que
a = n.q + r
or n1
(mod n).
Em outras palavras,
Zn = {0, 1, . . . , n 1}
.
17
6.3
Artim
etica modular
6.4
2.3 = 6 = 0!!!
Crit
erios de divisibilidade
Seja
a = an .an1 . . . . .a1 .a0
= an .10n + an1 .10n1 + . . . + a1 .10 + a0
18
Como 10 1
(mod 3),
a an + an1 + . . . + a1 + a0
Logo, a 0
(mod 3)
(mod 3) se e somente se
an + an1 + . . . + a1 + a0 0 (mod 3)
6.5
(mod 11)
Pot
encias
(mod 20)
=
=
(mod
(mod
(mod
(mod
(mod
(mod
20)
20)
20)
20)
20)
20)
6.6
Equa
c
oes diofantinas
c
ao diofantina e uma equacao em varias incognitas com coUma equa
eficientes inteiros. Por exemplo, xn + y n = z n . Estaremos interessados em
encontrar as solucoes inteiras dessas equacoes.
claro que tais equacoes podem ter infinitas soluces. Por exemplo, x + y = 2.
E
Ou nenhuma, como no caso da equacao
x3 117y 3 = 5
muito facil ver que isso e verdade atraves da reducao m
E
odulo 9. De fato, como
117 e divisvel por 9,
x3 117y 3 x3 5 (mod 9)
Logo, se a equacao acima tivesse solucao, deveramos ter x3 5 (mod 9).
classes m
odulo 9: 0 1 2 3 4 5 6 7 8
Mas:
Ou seja, x3 5
cubos m
odulo 9:
0 1 8 0 1 8 0 1 8
(mod 9) nao tem solucao.
6.7
Divis
ao modular
Logo,
a.b + k.n = 1
e portanto mdc(a, n) = 1.
() Suponha mdc(a, n) = 1. Logo existem e tais que:
.a + .n = 1
Ou seja,
.a 1
(mod n)
(mod n)
6.8
(mod n)
Exerccios propostos
4, 5, 6(b), 7, 10 e 11
Quest
ao 1 - a) Calcule d = mdc(252, 198).
b) Encontre dois n
umeros inteiros a e b tais que:
a.252 + b.198 = d
Resolu
c
ao:
252=198+54
198=3.54+36
54=252-198
36=198-3.54
54=36+18
18=54-36
21
(1)
=198-3.(252-198)
=-3.252+4.198
=252-198-(-3.252+4.198)
=4.252+(-5).198
Quest
ao 2 - Verifique se as proposicoes abaixo sao verdadeiras ou falsas. De
uma demonstracao (= justificativa clara e bem escrita) ou um contra-exemplo
para justificar a sua conclus
ao.
(a) Se p e um n
umero primo, entao p e um n
umero irracional.
(b) Se um n
umero inteiro A se escreve em base 8 na forma an an1 ...a1 a0 , com
0 ai 7, entao 2|A se e somente se a0 = 0.
(c) Se p > 3 e um n
umero primo e p a(
(d) Todo n
umero inteiro representavel com tres algarismos iguais na base 10 e
divisvel por 37.
(e) Se x e y sao inteiros mpares, entao x2 + y 2 = p2 para algum primo p.
Resolu
c
ao:
a) V- Suponha que existam a, b tais que
mdc(a, b) = 1. Logo,
p =
a
b.
Podemos supor
p.b2 = a2
e portanto p|a2 . Pela propriedade fundamental dos primos, p|a. Logo,
existe c tal que a = pc.
p.b2 = p2 .c2 = b2 = p.c2 = p|b2 = p|b
Mas isso e um absurdo uma vez que estamos supondo mdc(a, b) = 1.
b) F - Seja A = an an1 . . . a1 a0 um n
umero na base 8. Entao 2|A se e
somente se A 0 (mod 2). Observe que
A = an .8n + . . . + a1 .8 + a0 a0
(mod 2)
(mod 3) ou p 2 (mod 3)
(mod 3) ou a 2
a = 3n + k,
22
(mod 37)
y = 2m + 1
Logo,
x2 + y 2
= 4n2 + 4n + 1 + 4m2 + 4m + 1
= 2(2n2 + 2n + 2m2 + 2m + 1)
= 2k
onde k e um n
umero mpar. Logo nao existe p tal que
x2 + y 2 = p2
Observe que p nao precisa ser primo: vale para qualquer n
umero natural.
Quest
ao 3 - Resolva um (e apenas um) dos exerccios abaixo:
(a) Seja p um n
umero primo. Mostre que um inteiro positivo a e o seu proprio
inverso m
odulo p (ou seja, a2 1 (mod p)) se e somente se a 1 (mod p)
ou a 1 (mod p).
(b) Calcule 1235
(mod 23).
Resolu
c
ao:
a) (=) Suponhamos a2 1 (mod p). Logo,
(a2 1) 0 (mod p) = p|(a + 1)(a 1)
Pela propriedade fundamental dos primos, p|(a + 1) ou p|(a 1). Logo,
a 1 (mod p)
a 1
ou
(=) Trivial!
b) Observe que 35 = 25 + 2 + 1. Logo,
1235
23
(mod p)
Induc
ao e Fermat
8.1
Induc
ao finita
Seja P (n) uma proposicao que afirma que uma determinada propriedade vale
para cada n
umero natural n. Por exemplo:
Se p e um n
umero primo, entao np n e divisvel por p para todo natural
n.
A soma de 1 ate n e
n(n+1)
2
8.2
Lema 10 Seja p um n
umero primo e a, b inteiros. Ent
ao,
(a + b)p ap + bp
Prova
(mod p)
(n + 1)p np + 1p np + 1 (mod p)
Como pela hipotese de inducao temos np n (mod p),
(n + 1)p np + 1 n + 1 (mod p)
Como queramos demonstrar.
24
Prova
aa 1
(mod p)
(mod p).
Logo,
ap1 1 (mod p).
Podemos simplificar algumas contas usando o Teorema de Fermat. De fato,
sejam p primo, a inteiro tal que mdc(a, p) = 1 e k um n
umero inteiro tal que
k p 1. Dividindo k por p 1,
k = (p 1).q + r
0 r < (p 1)
Logo,
p1
Mas (a
8.3
(mod p).
(mod p).
Exerccios propostos
1, 3, 46, 7, 8, 12
Pseudoprimos
Nesta secao, veremos com usar o pequeno teorema de Fermat para identificar
a-lo .
que um n
umero e composto sem fator
25
9.1
Pseudoprimos
claro que esse nao e um metodo eficiente para testar primalidade uma vez que
E
e um metodo de exaust
ao.
(mod n)
Apesar de `as vezes dar errado, esse teste (chamado de teste de Leibniz) e muito
u
til. Tambeem e possvel melhorar o resultado do teste se testarmos para duas
bases.
Exemplo 6 Existem 50.847.534 primos entre 1 e 109 ; existem apenas 5597
pseudoprimos na base 2 e 1272 pseudoprimos para as bases 2 e 3.
9.2
N
umeros de Carmichael
se
Os n
umeros de Carmichael possuem duas propriedades muito interessantes,
dadas pelo teorema baixo:
Teorema 13 (Teorema de Korselt:) Um inteiro positivo mpar n e um n
umero
de Carmichael se, e somente se, cada fator primo p de n satisfaz as seguintes
condico
es:
1. p2 n
ao divide n;
2. p 1 divide n 1.
Prova
(mod p)
(mod p)
Por (1), temos que n = p1 . . . pk com p1 < p2 < . . . < pk . Como os primos sao
distintos, bn b e divisvel pelo produto p1 .p2 . . . . .pk = n. Em outras palavras,
bn b
(mod n)
e portanto n e um n
umero de Carmichael.
(=) Seja n um n
umero de Carmichael e suponhamos que exista p primo tal
que p2 |n. Escolha b = p. Entao:
pn p = p(pn1 1)
Mas p nao divide pn1 1, logo p2 nao pode dividir pn p. Portanto, n nao
pode dividir pn p. Em outras palavras, p p (mod n). Absurdo.
O restante da demonstracao depende do teorema da raiz primitiva, que so sera
vista no captulo 10...
Observa
co
es:
Para verificar que um n
umero e de Carmichael usando o teorema acima
necessitamos fatora-lo...
Muitos n
umeros de Carmichael possuem fatores primos pequenos!
Existem infinitos n
umeros de Carmichael.
Entre 1 e 109 existem 50.847.534 primos e 646 n
umeros de Carmichael.
27
9.3
Teste de Miller
onde n 1 = 2k q.
O fato e que, se n e primo, entao:
b2
bn1 1 (mod n)
j
j1
Exemplo 7 Tome o n
umero de Carmichael 561. Temos que 560 = 24 .35.
Calculando as sequencias de restos m
odulo 561 das potencias de 2:
expoentes
restos
35
263
2.35
166
28
22 .35
67
23 .35
1
9.4
Primalidade e computac
ao alg
ebrica
9.5
Exerccios propostos
2, 5, 7, 8, 10
10
Teorema de Euler
O pequeno teorema de Fermat nos diz como trabalhar com certas congruencias
envolvendo expoentes quando o m
odulo e primo. Nessa secao, veremos como
lidar com congruencias m
odulo um n
umero composto.
10.1
Func
ao de Euler
Defini
c
ao. Seja n um inteiro positivo. A fun
c
ao de Euler (n) e definida
como o n
umero de inteiros positivos nao excedendo n que sao relativamente
primos com n.
A tabela abaixo apresenta os valores de (n) para 1 n 12.
n
(n)
1
1
2
1
3
2
4
2
5
4
6
2
7
6
8
4
9
6
10
4
11
10
12
4
0 b < pk 1
onde
Portanto ha pk1 inteiros positivos menores que pk que sao divisveis por p.
Logo ha pk pk1 que n
ao sao divisveis por p. Ou seja,
(pk ) = pk1 (p 1)
Para obtermos a formula geral, e necessario provar o seguinte resultado:
Teorema. Se m, n sao inteiros positivos tais que mdc(m, n) = 1, entao
(mn) = (m).(n)
A demonstracao desse teorema e trabalhosa (mas nao difcil) e portanto nao
faremos aqui.
Exemplo 8 (100) = (22 ).(52 ) = (2.1).(5.4) = 40
Pelo teorema acima temos que, se n = pe11 . . . . .pekk , entao,
(n) = pe11 1 . . . . .pekk 1 (p1 1). . . . .(pk 1)
10.2
Teorema de Euler
30
(por que?)
3
1
7
5
(mod
(mod
(mod
(mod
8)
8)
8)
8)
Logo,
(3.1).(3.3).(3.5).(3.7) 1.3.5.7
(mod 8)
e portanto,
34 .1.3.5.7 1.3.5.7
(mod 8)
(mod n)
Logo,
a(n) .b1 . . . . .b(n) b1 . . . . .b(n)
(mod n)
Como mdc(b1 . . . . .b(n) , n) = 1, podemos cortar o termo comum dos dois lados
e portanto,
a(n) 1 (mod n)
10.3
Exerccios propostos
Captulo 8: 4, 6, 8, 9, 10, 18
31
10.4
Tabela Hashing
(mod n)
64184821268
(mod n)
11
11.1
Criptografia RSA
Pr
e-codifica
c
ao
11.2
Codificando e decodificando
do sistema RSA.
33
(mod n)
1 = 120 + (17).7
Logo o inverso de 7 m
odulo 120 e 17. Como d deve ser usado como um
expoente, precisamos que d seja positivo. Logo tomamos d = 120 117 = 103.
34
11.3
Funciona?
(mod n)
E por que nao a igualdade? Observe que DC(b) e b sao menores que n 1.
Por isso escolhemos b menor que n e mantivemos os blocos separados depois da
codificacao!
Por definicao, temos que
DC(b) (be )d be.d
(mod n)
Mas d e o inverso de e m
odulo (n). Logo existe inteiro k tal que ed = 1+k(n).
Logo,
bed b1+k(n) (b(n) )k .b (mod n)
(mod n)
Se b e n nao sao primos entre si, obderve que n = p.q, p e q primos distintos.
Logo,
bed b1+k(n) (b(p1) )k.(q1) .b (mod p)
bed b
(mod p)
(mod q)
Portanto,
como queramos.
bed b
(mod p.q)
35
11.4
Porque o RSA
e seguro
(p + q)2 4n
11.5
Escolhendo primos
11.6
Assinaturas
11.7
Exerccios propostos
Captulo 11: 1, 2, 3, 4, 6.
12
1o trabalho pr
atico
Parte escrita de no m
aximo duas paginas digitadas. Essa parte dever
a conter os resultados do trabalho juntamente com a analise desses
resultados (em especial, se foi facil quebrar a sua chave ou nao).
Codigo impresso comentado . Evitem C+ +, por favor!
Disquete com o executavel do programa. Este tambem pode ser enviado
por e-mail. Lembrem-se que eu posso rodar apenas programas em Delphi
(4.0) ou qualquer outra linguagem que rode nas estacoes do DCC. Entao
evitem artifcios graficos sofisticados...
13
13.1
Razes primitivas
Teste de Lucas
38
n1
p
(mod n)
\ 1 (mod n)
14
Sistemas de congru
encias
14.1
Equa
c
oes lineares
(mod n)
39
(mod n )
(mod 4)
Logo a soluca
o procurada e:
x 2 (mod 4)
Mas observe que o m
odulo mudou de 8 para 4... Para consertar isso, vamos
escrever a express
ao acima em uma express
ao de inteiros:
x = 2 + 4k
Duas possibilidades:
k e par. Nesse caso, x 2 (mod 8) e 2 e uma soluca
o.
k e mpar (k = 2m + 1). Nesse caso, x 6
14.2
Um exemplo astron
omico
(mod 13)
(mod 15)
(mod 19)
40
14.3
Algoritmo chin
es do resto
Observe que, para resolver o problema dos satelites, resolvemos as duas primeiras
equacoes, obtendo x = 79 + 195u. Isso corresponde a uma nova equacao, x 79
(mod 195). Em geral, a solucao de um sistema de muitas equacoes e obtida
atraves da solucao de varios sistemas de duas equacoes. Desta forma, vamos
analisar apenas o algoritmo correspondente a solucao de um sistema de duas
equacoes.
Considere entao o sistema
x a
x b
(mod m)
(mod n)
(mod n)
Teorema Chin
es do resto. Sejam n1 , . . . , nk inteiros positivos, dois a dois
primos entre si. Entao o sistema
x a1
..
.
(mod n1 )
x ak
(mod nk )
14.4
M
odulos n
ao co-primos
(mod 12)
(mod 8)
14.5
Partilha de senhas
Suponha que que desejemos partilhar uma senha s entre n pessoas, de modo
que a cada pessoa seja dado um elemento (uma parte) da senha. Esse elemento
e tal que e escolhido de um conjunto S de n pares de inteiros positivos de modo
que, para um inteiro positivo k n previamente escolhido temos:
1. qualquer subconjunto de S com k elementos permite determinar s facilmente;
2. e muito difcil determinar s conhecendo menos de k elementos de S.
Comecamos escolhendo um conjunto L de n inteiros positivos, dois a dois primos
entre si. Seja N o produto dos k menores n
umeros de L e M o produto dos
k 1 maiores n
umeros de L. Dizemos que esse conjunto tem limiar k se
N >s>M
Observe que essa condicao implica que o produto de k ou mais elementos de L
e sempre maior que N e o produto de menos de k elementos e sempre menor
que M. O conjunto S sera formado pelos pares da forma (m, sm ) onde m L e
sm e a forma reduzida de s m
odulo m. Observe que limiar k 1 implica s > m
para qualquer m L. Logo sm < s para qualquer m L.
42
(mod 17)
(mod 23)
A soluca
o e x = 30 + 391k...
14.6
Exerccios propostos
1,2,4
43
15
15.1
L
ogica e ci
encia da computac
ao
Motiva
c
ao
15.2
L
ogica Cl
assica
15.3
L
ogica Intuicionista
44
Existem dois n
umeros irracionais x e y tais que xy e racional.
Existem sete 7s consecutivos na representacao decimal do n
umero
.
Afirmativas so sao validas perante a existencia de uma prova ou construca
o
da afirmativa.
Essa logica e de especial interesse porque suas formulas estao em correspondencia 1 a 1 com tipos em -calculus, base das linguagens de programacao funcionais: Lisp, ML, Haskell.
Ainda, logica intuicionista e uma logica de recursos infinitos (mas nao de
conclus
oes infinitas).
15.4
L
ogica linear
15.5
Linguagens l
ogicas de programa
c
ao - Prolog
15.6
Linguagens l
ogicas de programa
c
ao - -Prolog
As f
ormulas de primeira ordem de Harrop estendem as clausulas de Horn,
uma vez que admitem implicacoes e quantificadores universais no gol:
G ::= A|G G|P G|xG
D ::= A|G A|xD
Deste modo, o programa pode crescer ao longo da prova (modularizacao) e
novas constantes podem ser adicionadas ao programa (abstract datatypes)
Desvantagem: recursos ilimitados para construcao de provas.
15.7
Linguagens l
ogicas de programa
c
ao - Forum
y (G1 Gm G0 ),
(m 0)
16
Algebra
e ci
encia da computac
ao
17
Sem
antica
18
Sem
antica Denotacional
a sem
E
antica que mapeia construtores sintaticos de programas em valores abstratos (n
umeros, funcoes, etc) que eles denotam. Esses mapeamentos sao
claro
usualmente definidos recursivamente (como no cado do while acima). E
que alguns cuidados devem ser tomados quando trabalhamos com funcoes recursivas. Em especial, para modelar o espaco de todas as funcoes recursivas precisaramos de um conjunto X que contivesse todo o espaco de funcoes
X X. Por questoes de cardinalidade, sabemos que isso e impossvel. Para
lidar com essa dificuldade, foi proposto, em 1969, um modelo para funcoes recursivas X X restritas a funcoes contnuas em X (de acordo com uma certa
topologia).
Esse modelo, chamado de teoria de domnio, e utilizado para descrever a sem
antica
denotacional do -calculus, base de linguagens de programacao funcionais. E,
utilizando o -calculus, podemos facilmente descrever a sem
antica denotacional
de linguagens como o Algol60, base do Pascal.
Outro tipo de sem
antica que tem sido muito estudada e a sem
antica categ
orica.
As ideias basicas desse topico (muito em moda atualmente) sao elegantes e de
facil entendimento para um aluno da graduacao com alguma maturidade na
area de Algebra.
19
Segundo trabalho pr
atico
48
49