Вы находитесь на странице: 1из 8

Parte VIII

Geracao de n umeros
aleatorios
28 Introdu cao
A simula cao de qualquer sistema onde existam com-
ponentes aleatorias requer a gera cao ou obten cao de
n umeros que s ao aleat orios em algum sentido.
Ex.: para simular o tamanho de uma la, preci-
samos determinar o tempo entre chegadas de cli-
entes e o tempo de atendimento de cada cliente,
que geralmente sao modelados como vari aveis
aleat orias pertencente a determinadas distri-
bui coes.
Valores para vari aveis aleatorias denidas por qual-
quer distribui cao de probabilidades podem ser gera-
dos utilizando valores IID de uma vari avel aleat oria
com distribuicao uniforme entre 0 e 1.
Portanto, chamaremos de n umeros aleat orios
valores produzidos por uma vari avel aleat oria
com distribuicao uniforme entre 0 e 1. Tratare-
mos a seguir da gera cao deste valores.
Os primeiros metodos foram essencialmente manuais:
atirar objetos e dados, manipular cartas, retirar bolas
numeradas de urnas. Ainda hoje s ao usados em jogos
e em algumas loterias.
No incio do seculo XX alguns dispositivos fo-
ram criados para acelerar a gera cao de n umeros
aleat orios: discos girat orios e impulsos eletricos
no v acuo (em tubos) (usados na decada de 50
pela loteria brit anica).
Muitos outros esquemas s ao utilizados no dia-a-
dia: selecionar um n umero aleatoriamente em
uma lista telefonica ou em algum relatorio com
muitos n umeros (como o censo), utilizar dgitos
de algum n umero irracional (como ).
Com a populariza cao dos computadores maior
aten cao foi dada para metodos compatveis com a
forma como os computadores trabalham. Considere-
mos as seguites possibilidades:
Armazenar uma tabela de n umeros aleat orios.
Como atualmente e comum simulacoes que
utilizam milh oes de n umeros aleat orios, este
n umeros devem ser mantidos em armazena-
mento secundario (como discos) que possuem
acesso mais lento.
Acoplar um equipamento eletrico para geracao
de n umeros aleat orios. A principal desvantagem
desta abordagem e a impossibilidade de repetir
uma sequencia gerada anteriormente (armaze-
nar, como vimos, pode ser inviavel).
Portanto, as pesquisas nas decadas de 40 e
50 voltaram-se para a gera cao de n umeros
aleat orios utilizando metodos numericos
ou aritmeticos.
Estes metodos sao sequenciais, com cada
novo n umero sendo determinado pelos anterio-
res com base em uma formula matematica xa.
A primeira tentativa neste sentido foi o metodo
midsquare de von Neumann e Metropolis nos anos
40: Comece com um n umero de 4 dgitos e eleve ele
ao quadrado, resultando em um n umero com ate 8
dgitos. Complete com zeros a esquerda para que a
representacao tenha 8 dgitos. Utilize os 4 dgitos cen-
trais como o pr oximo n umero aleat orio. Para obter
um n umero entre 0 e 1 basta dividir por 10
4
. Assim
sucessivamente para obter os proximos.
Intuitivamente o metodo parece bom, j a
que temos a tendencia a achar que algo e
aleat orio quando n ao conseguimos enxergar
padr oes.
Entretanto, este metodo nao funciona bem.
Um dos problemas serios desta abordagem e a
forte tendencia de gerar o valor 0, onde perma-
necera neste valor para sempre.
Isto ilustra o perigo em assumir que sempre
conseguiremos um bom gerador de n umeros
aleat orios fazendo alguma coisa estranha
em um n umero para obter o pr oximo.
n=100; x=zeros(1,n); x(1)=1234;
for i=2:n;
x(i)=mod(floor(x(i-1)*x(i-1)/100),10000);
end;
x=x/10000; hist(x)
Uma crtica aos metodos aritmeticos em ge-
ral e o fato dos n umeros gerados nao serem
aleatorios (no sentido de ser imprevisvel). De
fato, se conhecemos um n umero da serie gerada, sabe-
mos exatamente quais serao todos os pr oximos. Por
isso os n umeros gerados por estes metodos s ao muitas
vezes chamados de pseudo-aleatorios.
Na pr atica, podemos aceitar geradores
aritmeticos desde que produzam n umeros
que se parecam com sorteios independentes de
uma distribuicao uniforme entre 0 e 1. Ou seja,
que a sequencia gerada passe com sucesso por
uma serie de testes estatsticos (isto sera usado
como denicao de n umeros aleatorios).
Um bom gerador deveria possuir as seguintes
propriedades:
22
1. Acima de tudo, os n umeros deveriam parecer
distribudos uniformemente entre 0 e 1, e n ao
deveriam exibir qualquer correla cao entre eles.
Caso contrario, o resultado da simula cao pode
ser completamente inv alido.
2. Ser r apido e n ao necessitar de muito armazena-
mento.
3. Permitir repetir a gera cao de uma dada
sequencia de n umeros. Isto facilita a depura cao
programa que simula o modelo, e permite a com-
para cao de sistemas diferentes quando submeti-
dos aos mesmos eventos.
4. Permitir a gera cao de subsequencias disjuntas.
Cada subsequencia e utilizada para simuladar
uma determinada fonte de aleatoriedade. In-
terse coes entre estas subsequencias pode produ-
zir correlacoes indesejadas.
Os itens 2, 3 e 4 sao atendidos por praticamente to-
dos os geradores propostos. Alguns artigos no nal
da decada de 80 apontaram v arios geradores utili-
zados na pr atica que falham em atender o item 1
(o mais importante). Atualmente os softwares de
auxlio ` a simula cao est ao atentos a isso, e e facil
conseguir bibliotecas gratuitas (para as linguagens de
program cao mais populares) com geradores que aten-
dem ao item1.
28.1 Geradores congruentes
Os metodos baseados em congruencias s ao da forma
X
i
= f(X
i1
, X
i2
, . . .) (mod m), onde X
i
e o i-
esimo n umero gerado e f(.) e uma fun cao deter-
minstica xada.
Os valores gerados est ao entre 0 e m 1. Portanto,
os n umeros entre 0 e 1 s ao obtidos por U
i
= X
i
/m.
ANALOGIA COM UMA ROLETA.
Os geradores de n umeros aleat orios mais populares
sao os Geradores Congruente Lineares. Estes sao ge-
radores baseados em congruencia onde f(.) e uma
fun cao linear de X
i1
.
29 Geradores Congruente Linea-
res
S ao geradores denidos pela formula recursiva X
i
=
(aX
i1
+b) (mod m), onde m (o modulo), a (o mul-
tiplicador), b (o incremento) e X
0
(a semente) sao
inteiros n ao negativos. Alem disso, m > 0, a < m,
b < m e X
0
< m.
Ex.: m = 16, a = 5, b = 3 e X
0
= 7, ou seja,
X
i
= (5X
i1
+ 3) (mod 16). Portanto, X
1
=
(5 7 + 3) (mod 16) = 38 mod 16 = 6, X
2
=
(5 6 + 3) (mod 16) = 33 mod 16 = 1. Conti-
nuando os c alculos chegamos a X
16
= 7 = X
0
,
ou seja, a partir deste ponto toda a sequencia se
repete.
n=17; m=16; a=5; b=3; x=zeros(1,n); x(1)=7;
for i=2:n; x(i)=mod(a*x(i-1)+b,m); end;
x, x=x/m
Uma obje cao para este metodo e o fato de cada
valor U
i
= X
i
/m estar restrito ao conjunto
0, 1/m, 2/m, . . . , (m 1)/m. Por exemplo, n ao te-
mos como gerar um valor para U
i
entre 1/m e 2/m,
o que deveria acontecer com probabilidade 1/m.
Entretanto, com valores altos para m (utiliza-se
m 10
9
) os valores de U
i
fornecem uma boa
aproxima cao para distribui cao uniforme entre 0
e 1.
A repeti cao de parte da sequencia (observada no
exemplo) e inevit avel, e ocorre sempre que a
sequencia atinge algum valor gerado anteriormente
(formando assim um ciclo).
O comprimento do ciclo gerado e chamado de
perodo do gerador.
Como 0 X
i
m 1, temos que o perodo e
no maximo m. Quando o perodo e igual a m,
dizemos que o gerador e de perodo completo.
Quando o gerador e de perodo completo, qual-
quer semente produzir a o ciclo inteiro. Caso
contr ario, o perodo vai depender da semente
do gerador.
Ex.1: X
i
= (2X
i1
+ 1) (mod 5). Com se-
mente igual a 0, 1, 2 ou 3, o perodo e igual a 4.
Com semente igual a 4 o perodo e igual a 1.
Ex.2: X
i
= (3X
i1
+ 1) (mod 6). Existe ape-
nas 1 ciclo com perodo 2 (do valor 1 para o 4 e
vice-versa). As sementes 0 e 2 levam ao valor 1
(que pertence ao ciclo). As sementes 3 e 5 levam
ao valor 4 (que pertence ao ciclo).
Como os projetos de simulacao geralmente utilizam
muitos n umeros aleat orios, e necessario que o perodo
do gerador seja longo para evitar as repeti coes.
Alem disso, os geradores com perodo completo
sao desej aveis pelo fato de cada n umero entre 0
e m 1 ter chance de ocorrer no ciclo (contri-
buindo para a uniformidade).
Note porem que mesmo geradores com perodo
completo podem gerar sequencias n ao unifor-
mes. Por exemplo, X
i
= (X
i1
+ 1) (mod m)
tem perodo completo, mas gera n umeros na or-
dem 0, 1, 2, . . . , m 1. Ou seja, uma sequencia
com k valores, onde k e muito menor que m,
possui apenas valores pr oximos (e portanto, mal
distribudos no intervalo de 0 ` a m 1).
23
O teorema a seguir (demonstrado por Hull e Dobell
em 1962) mostra as condicoes para que m, a e b pro-
duzam um gerador com perodo completo.
Teorema1 Um gerador congruente linear tem
perodo completo se e somente se as tres
condi coes a seguir s ao satisfeitas:
1. m e b sao primos entre si. Ou seja, o unico
inteiro positivo que divide m e b e 1.
2. Se q e um n umero primo (divisvel apenas por 1
e por ele pr oprio) que divide m, ent ao q divide
a 1.
3. Se 4 divide m, ent ao 4 divide a 1.
Dividir por m para obter o resto e uma opera cao
aritmetica lenta. Uma alternativa que evita esta di-
vis ao e utilizar m = 2
w
para algum w (geralmente
o n umero de bits de uma word no computador utili-
zado).
Neste caso, o resto sao os ultimos w bits.
Ex.: 11010 dividido por 2
2
= 110 mais resto 10.
Atualmente a maioria dos computadores pos-
suem words com 32 ou 64 bits. Ou seja, descon-
siderando o bit de sinal temos m = 2
31
> 2.1
bilh oes.
Alem disso, se w e o n umero de bits de uma
word, esta abordagem se aproveita do overow
de inteiros. Quando uma opera cao aritmetica
provoca overow, os bits mais signicativos
sao descartados (em algumas arquiteturas), so-
brando apenas o resto da divisao por 2
w
.
Ex.: X
i
= (5X
i1
+3) (mod 16), em um com-
putador hipotetico com 4 bits por word. Se
X
0
= 5, quanto vale X
1
? 5 5 + 3 = 28 (11100
em bin ario). Como ocorre overow, o bit mais
signicativo e perdido, restando 1100 (12 em de-
cimal). Note que X
1
= 28 mod 16 = 12.


E necessario vericar exatamente como o over-
ow de inteiros e tratado, o que depende da ar-
quitetura do computador, do formato de repre-
senta cao de inteiros e da linguagem utilizada.
Por exemplo, o bit de sinal pode ser modicado
na opera cao.
Quando m = 2
w
, temos pelo Teorema 1 que o perodo
completo e obtido se b e mpar e a 1 e divisvel por
4.
Valores para a e b que produzem bons geradores
podem ser obtidos por tentativas. Alguns valo-
res sao fornecidos na literatura. Por exemplo,
para b = 31 Kobayashi prop os a = 314.159.269
e b = 453.806.245.
n=10000; m=2^31; a=314159269; b=453806245;
x=zeros(1,n); x(1)=0;
for i=2:n; x(i)=mod(a*x(i-1)+b,m); end;
x=x/m; hist(x)
Note que geradores onde b = 0 (chamados de multi-
plicativos) n ao satisfazem a primeira condi cao do Te-
orema 1, e portanto n ao possuem perodo completo.
Porem, os geradores multiplicativos s ao mais e-
cientes, mais simples, mais bem compreendidos
e mais utilizados. Analisaremos a seguir este
tipo de gerador.
29.1 Geradores Multiplicativos: b = 0
Nesta secao analisaremos o gerador X
i
= aX
i1
(mod m).
Quando m = 2
w
, Knuth provou em 1981 que o
perodo e no maximo 2
w2
(ou seja, 1/4 do perodo
completo).
Alem disso, geralmente nao temos como deter-
minar m/4 inteiros estao distribudos (pode ha-
ver grande concentracao em alguma regi oes, pre-
judicando a uniformidade).
Uma proposta para o valor de m que se mostrou bem
sucedida e utilizar o maior n umero primo menor que
2
w
.
Ex.: O maior primo menor que 2
31
e 2
31
1.
Knuth (1981) mostrou que para m primo, o perodo
do gerador e m 1 se a e um elemento primitivo
modulo m, isto e, o menor valor inteiro para c tal
que a
c
1 e divisvel por m e c = m 1.
Com m e a escolhidos desta forma, obtemos
cada inteiro 1, 2, . . . , m1 exatamente uma vez
em cada ciclo.
Os valores para a que produzem bons geradores
sao identicados atraves de testes. Para m =
2
31
1, dois valores para a tem sido largamente
utilizados. S ao eles a = 7
5
e a = 630.360.016.
Para m primo, n ao dispomos do mecanismo de over-
ow para evitar a opera cao de divis ao.
Um metodo proposto para evitar a divis ao di-
reta e chamado divisao simulada.
Sejam m = 2
w
q, X

i
= (aX
i1
) (mod 2
w
)
e k = aX
i1
/2
w
| (que podem ser obtidos sem
divis ao).
aX
i1
= X

i
+ 2
w
k
aX
i1
kq = X

i
+ 2
w
kkq = X

i
+ mk
(aX
i1
mk) (mod m) = (X

i
+kq) (mod m)
(aX
i1
) (mod m) = (X

i
+ kq) (mod m)
24
Como q < 2
w1
, ent ao 2m = 2
w+1
2q > 2
w
X

i
+ kq < 2m...
X
i
=

i
+ kq, se X

i
+ kq < m
X

i
+ kq m, se X

i
+ kq m
Ex.: m = 2
31
1, a = 7
5
, X
i1
= 7. Logo
X

i
= 7
6
(mod 2
31
) = 117649, k = 0.
30 Geradores Tausworthe
Os geradores Tausworthe operam diretamente sobre
os bits.
Uma sequencia de dgitos bin arios e denida pela re-
correncia
b
i
= (c
1
b
i1
+ c
2
b
i2
+ . . . + c
q
b
iq
) (mod 2),
onde c
1
, . . . , c
q
sao constantes binarias.
Neste caso, um ciclo e denido como uma sequencia
de valores bin arios que se repetem continuamente.
Portanto, como os q bits anteriores sao utilizados, o
perodo pode chegar a 2
q
1 (uma sequencia de zeros
e excluda, pois gera outra sequencia de zeros).
Praticamente todos os geradores Tausworthe propos-
tos sao da forma
b
i
= (b
ir
+ b
iq
) (mod 2),
para inteiros r e q satisfazendo 0 < r < q.
Note que a soma de variaveis bin aria m odulo 2 e
o mesmo que a opera cao ou exclusivo, ou seja,
b
i
= 0 se b
ir
= b
iq
, e b
i
= 1 se b
ir
,= b
iq
.
Ex.: r = 3, q = 5, b
1
= b
2
= . . . = b
5
=
1. Assim, para i 6, b
i
e o ou exclusivo
de b
i3
e b
i5
. Os primeiros b
i
s serao 11111
00011011101010000100101100-111110.. Note a
repeti cao ap os 31 bits.
Para gerar n umeros entre 0 e 1, podemos particionar
a sequencia em grupos de w bits, e dividir por 2
w
cada n umero representado por um grupo de bits.
Geradores Tausworthe oferecem algumas vantagens
potenciais com relacao aos Congruente Lineares.
S ao independentes do computador utilizado (ta-
manho da word).
Oferecem perodos de qualquer tamanho.
Porem, testes empricos da qualidade estatstica
dos n umero gerados podem ser inconclusivos.
n=32; r=3; q=5; b=ones(1,n);
for i=q+1:n; b(i)=mod(b(i-r)+b(i-q),2); end; b,
w=4; x=zeros(1,n/w);
for i=1:n/w,
for j=1:w, x(i)=x(i)+b(4*(i-1)+j)*2^(w-j); end;
end; x
31 Combinando geradores


E possvel combinar dois geradores para produzir um
gerador melhor. Algumas formas s ao:
Adicionando n umeros aleat orios obtidos por dois ou
mais geradores.
Se X
i
e Y
i
sao duas sequencia de n umeros
aleat orios no intervalo de 0 a m1, eles podem
ser combinados para produzir W
i
= (X
i
+ Y
i
)
(mod m).
Se estas sequencias tem perodos diferentes e s ao
obtidos por algoritmos diferentes, isto pode me-
lhorar consideravelmente o perodo e a aleatori-
edade.
Ou-Exclusivo dos n umeros aleat orios obtidos por dois
ou mais geradores. Aqui a adi cao proposta anterior-
mente e substituda por uma opera cao ou-exclusivo
bit-a-bit.
Shue.
Utiliza uma sequencia como ndice para decidir
qual n umero de uma segunda sequencia deve ser
retornado.
Nesta abordagem n ao e facil saltar sub-
sequencias longas (com o objetivo de produzir
subsequencias independentes).
31.1 Sele cao de sementes
Uma escolha ruim da semente pode gerar simulacoes
com resultados falsos. Esta escolha depende do gera-
dor utilizado. Verique as restri coes do gerador.
Nao utilizar zero. Geradores multiplicativos e
Tausworthe nao permitem semente zero.
Evitar valores pares. Geradores multiplicativos com
m = 2
w
exigem sementes mpares.
Nao subdividir uma sequencia. Quando existe cor-
rela cao entre os n umeros gerados, n ao utilizar
uma mesma sequencia para gerar v arias vari aveis
aleat orias. Ex.: x
1
tempo entre chegadas, x
2
tempo
de atendimento... Na d uvida, divida o ciclo em sub-
sequencias disjuntas.
n=10000; m=2^31; a=5; b=1; x=zeros(1,n);
x(1)=10;
for i=2:n; x(i)=mod(a*x(i-1)+b,m); end;
x=x/m; hist(x); figure; autocorr(x)
Nao utilize sequencias sobrepostas. Se a semente
das sequencia utilizadas para gerar duas v.a. se so-
brep oem durante a simula cao, estas duas v.a. ter ao
correlacao. Fa ca um programa para determinar as
sementes que subdividem o ciclo em sequencias di-
juntas de mesmo tamanho.
25
Nao e necessario determinar semente em
replicacoes sucessivas. A semente deixada
pela ultima replica cao pode ser utilizada.
Nao utilize sementes aleatorias. Por exemplo, o
rel ogio do sistema. Problemas: (i) impede a re-
plica cao da simula cao (ex.: depura cao), e (ii) n ao
garante sequencias n ao sobrepostas. Tambem nao
use sementes produzidas por outros geradores.
Parte IX
No coes basicas em
teoria dos n umeros
32 Preliminares: Fun coes Inteiras
e mod
Se x e um n umero real, denotamos
x| = o maior inteiro menor ou igual a x.
(o piso de x)
x| = o menor inteiro maior ou igual a x.
(o teto de x)
Ex.: 1/2| = 0, 1/2| = 1, 1/2| = 1 (n ao zero!).
Algumas propriedades:
x| = x| se e somente se x e inteiro.
x| = x| + 1 se e somente se x N

AO e inteiro.
x| = x|
x 1 < x| x x| < x + 1
33 Divisibilidade
Dizemos que m divide n (ou n e divisvel por m)
se m > 0 e a razao n/m e um inteiro. Denotamos
m n m > 0 e n = mk para algum inteiro k.
A rela cao n e m ultiplo de m e identica, exceto
pelo fato de que m n ao precisa ser positivo.
Ex.: O unico m ultiplo de 0 e o pr oprio 0. Todo
inteiro e m ultiplo de -1, mas nenhum inteiro e
divisvel por -1 (por deni cao).
O maximo divisor comum (mdc) de dois inteiros m
e n e o maior inteiro que divide ambos:
mdc(m, n) = maxk [ k m e k n.
Ex.: mdc(12, 18) = 6. Este conceito e familiar,
visto que usamos em simplicacao de fra coes:
12/18 = (6 2)/(6 3) = 2/3.
O mnimo m ultiplo comum (mmc) de dois inteiros
POSITIVOS m e n e o menor inteiro POSITIVO que
e m ultiplo de ambos:
mmc(m, n) = mink [ k > 0, m k e n k.
Ex.: mmc(12, 18) = 36. Utilizamos este con-
ceito para determinar o mnimo denominador
comum de fra coes:
7
12
+
1
18
=
21
36
+
2
36
=
23
36
.
O mdc e facilmente calculado atraves do algoritmo
de Euclides (desenvolvido a 2300 anos!).
Para calcular mdc(m, n), com 0 m < n, utili-
zamos a recorrencia:
mdc(0, n) = n
mdc(m, n) = mdc(n mod m, m), para m > 0.
Ex.: mdc(12, 18) = mdc(6, 12) = mdc(0, 6) = 6.
Prova: qualquer n umero que divide m e n
tambem divide n mod m = n n/m|m.
O algoritmo de Euclides tambem permite obter intei-
ros m

e n

tal que
m

m + n

n = mdc(m, n).
Se m = 0, ent ao retorne m

= 0 e n

= 1. Caso
contr ario, retorne m

= m n/m|r e n

= r,
onde r = n mod m e rr + mm = mdc(r, m).
Ex.: obter m

e n

tal que m

12 + n

18 =
mdc(12, 18). Utilizando o exemplo anterior, va-
mos comecar com mdc(0, 6) = 0 0 + 1 6 (ou
seja, m

= 0 e n

= 1). Agora vamos obter


m

e n

tal que mdc(6, 12) = m

6 + n

12.
Para isso, utilizamos r = 12 mod 6 = 0 e
r 0 + m 6 = mdc(0, 6), ou seja, r = 0 (o
m

anterior) e m = 1 (o n

anterior). Portanto,
m

= 1 + 2 0 = 1 e n

= 0. Continuando,
obtemos mdc(12, 18) = (1)12 + 1 18.
Prova: mdc(m, n) = mdc(r, m) = rr + mm =
r(n n/m|m) + mm = (m n/m|r)m + rn.
34 N umeros primos
Um n umero inteiro positivo p e chamado primo se
ele tem apenas dois divisores: 1 e p.
Por conven cao o n umero 1 n ao e primo, portanto
os primeiros primos sao 2,3,5,7, 11,13,17,19,
23,29,31,37, 41..
N umeros com tres ou mais divisores sao chama-
dos de compostos.
Todo inteiro maior que 1 ou e primo ou com-
posto, nunca ambos.
26
A import ancia dos n umeros primos vem do fato de
todo inteiro n > 1 poder ser escrito como um produto
de n umeros primos,
n = p
1
. . . p
m
, onde p
1
, . . . , p
m
sao primos.
Prova: por indu cao, assuma que esta proprie-
dade vale para todo inteiro maior que 1 e menor
que n. Se n n ao for primo, ent ao ele tem um
divisor 1 < n
1
< n. Assim, podemos escrever
n = n
1
n
2
, com 1 < n
2
< n. Mas por hip otese,
n
1
e n
2
podem ser escritos como produto de pri-
mos. Caso base: 4 = 2 2.
O Teorema Fundamental da Aritmetica estabelece
que existe apenas uma forma de escrever um inteiro
n > 1 como um produto de primos em ordem decres-
cente.
Ex.: 12 = 2
2
3, 18 = 2 3
2
.
Ent ao, podemos escrever,
n = 2
n2
3
n3
5
n5
7
n7
. . . , onde cada n
p
N.
Assim, para multiplicar dois n umeros basta so-
mar os expoentes dos fatores primos,
n = mk n
p
= m
p
+ k
p
, para todo primo p.
Ex.: 12 18 = 2
2+1
3
1+2
= 216.
Isto implica que,
m n m
p
n
p
, para todo primo p.
E consequentemente,
k = mmc(m, n) k
p
= maxm
p
, n
p
, p.
k = mdc (m, n) k
p
= minm
p
, n
p
, p.
Ex.: mmc(12, 18) = 2
max{2,1}
+3
max{1,2}
= 2
2

3
2
= 36, mdc(12, 18) = 2
min{2,1}
+ 3
min{1,2}
=
2
1
3
1
= 6.
Como consequencia da fatoracao unica, se um
primo p divide m n, ent ao ele divide m ou n
(ou ambos). Note que isso n ao necessariamente
verdadeiro para n umeros compostos. Ex.: 4 di-
vide 60 = 6 10, mas nao divide nem 6 nem 10
(os fatores primos 2 2 foram separados).
35 N umeros primos entre si
Dizemos que dois inteiros m e n sao primos entre
si quando eles nao tem fatores primos em comum,
ou seja, mdc(m, n) = 1.
Ex.: quando simplicamos uma fra cao, esta-
mos reduzindo o numerador e o denominador
a n umeros primos entre si. 12/18 = (62)/(6
3) = 2/3 (n ao temos como simplicar mais, pois
2 e 3 sao primos entre si). De modo geral temos
que os n umeros m/mdc(m, n) e n/mdc(m, n)
sao primos entre si.
Pela deni cao, temos que dois inteiros m e n sao pri-
mos entre si se e somente se minm
p
, n
p
= 0 para
todo primo p.
Esta condi cao pode ser escrita como m
p
n
p
= 0
para todo primo p.
Com isso, podemos provar que k e m sao primos
entre si e k e n sao primos entre si se e somente
se k e m n sao primos entre si.
Prova: note que k
p
m
p
= 0 e k
p
n
p
= 0 se e
somente se k
p
(m
p
+ n
p
) = 0.
36 Operador MOD
Dados dois inteiros n e m ,= 0, denotamos por n mod
m o resto da divisao de n por m.
Como n/m| e o quociente desta divis ao, temos
que
n = m n/m| + n mod m.
Portanto,
n mod m = n m n/m|.
Ex.: 5 mod 3 = 5 3 5/3| = 2.
5 mod 3 = 5 (3) 5/3| = 1.
5 mod 3 = 5 3 5/3| = 1.
5 mod 3 = 5 (3) (5)/(3)| = 2.
Chamamos o n umero ap os o mod de modulo.
Pela deni cao, temos que
0 n mod m < m, se m > 0.
0 n mod m > m, se m < 0.
O operador mod e distributivo em relacao `a mul-
tiplica cao:
d (n mod m) = (dn) mod (dm).
Prova: d(n mod m) = d(nmn/m|) =
dn dm (dn)/(dm)| = (dn) mod (dm)
Em muitos casos o operador de congruencia ()
simplica a nota cao. Ele e denido como
a b (mod m) a mod m = b mod m.
Ou seja, este operador indica que a e b produzem
o mesmo resto quando divididos por m.
Este operador e lido a e congruente a b modulo
m.
Ex.: 9 16 (mod 5), pois 9 mod 5 = 4 e
16 mod 5 = 4.
A opera cao de congruencia pode tambem ser denida
como
a b (mod m) a b e m ultiplo de m.
27
Prova: como a = k m + a mod m para algum
inteiro k, e b = q m + b mod m para algum
inteiro q, ent ao ab = (kq)m (pois a mod m =
b mod m).
Esta rela cao facilita a determinacao de con-
gruencias. Ex.: 9 16 (mod 5), pois 9
(16) = 25 e m ultiplo de 5.
A opera cao de congruencia e uma relacao de equi-
valencia, ou seja, satisfaz as leis
(i) a a (reexiva)
(ii) a b b a (simetrica)
(iii) a b e b c a c (transitiva)
Prova: (iii) se a mod m = b mod m e b mod
m = c mod m, ent ao a mod m = c mod m.
Podemos somar e subtrair elementos congruentes sem
perder congruencia:
a b e c d a + c b + d (mod m)
a b e c d a c b d (mod m)
Prova: se a b e c d sao m ultiplos de m,
ent ao (a + c) (b + d) = (a b) + (c d) e
(a c) (b d) = (a b) (c d) tambem sao
m ultiplos de m.
O mesmo vale para multiplicacao:
a b e c d ac bd (mod m).
Prova: ac bd = (a b)c + b(c d) e m ultiplo
de m, pois a b e c d sao m ultiplos de m.
Uma consequencia direta desta propriedade e
a b a
n
b
n
(mod m), para n N.
Note que ac bd (mod m) n ao implica em
a b (mod m). Ex.: 3 2 5 2 (mod 4)
mas 3 nao e congruente a 5 (mod 4).
Podemos multiplicar/dividir a congruencia e o
modulo por uma constante n ao nula:
ad bd (mod md) a b (mod m), para d ,= 0.
Prova: (ad) mod (md) = a mod m e (bd) mod
(md) = b mod m.
Podemos dividir apenas o modulo:
a b (mod md) a b (mod m).
Prova: se a b e m ultiplo de md, tambem e
m ultiplo de m.
A lei abaixo permite dividir a congruencia modi-
cando o modulo o mnimo possvel:
ad bd (mod m) a b

mod
m
mdc(d, m)

.
Prova: pelo algoritmo de Euclides, existem in-
teiros d

e m

tal que d

d + m

m = mdc(d, m),
logo d

d mdc(d, m) (mod m). Utilizando


a a, temos que ad

d a mdc(d, m). O
mesmo vale para bd

d b mdc(d, m). Multi-


plicando ambos os lados de ad bd por d

ob-
temos por transitividade que a mdc(d, m)
b mdc(d, m) (mod m). Agora basta dividir a
congruencia e o modulo por mdc(d, m).
Um caso particular importante ocorre quando d
e m sao primos entre si:
ad bd a b (mod m).
Ex.: se m n ao e m ultiplo de 5, temos que 15
35 (mod m) pode ser simplicado para 3 7
(mod m).
Se a b com rela cao a dois modulos, podemos com-
binar os modulos da seguinte forma:
a b (mod m) e a b (mod n)
a b (mod mmc(m, n)).
Prova: ab e m ultiplo de m e n se e somente se
e m ultiplo de mmc(m, n) (princpio da fatora cao
unica).
Portanto, quando m e n sao primos entre si,
a b (mod m) e a b (mod n)
a b (mod mn).
Se m tem fatora cao em primos 2
m2
3
m3
5
m5
. . .,
a b (mod m) a b (mod p
mp
), primo p.
37 Aplica cao na geracao de
n umero aleat orios
Seja (m) o n umero de valores inteiros entre 0 e m1
que sao primos com rela cao a m.
Lema A. Se p e primo, ent ao (p
e
) = p
e1
(p 1),
onde e e um inteiro positivo.
Prova: por indu cao em e. Hipotese: vale para
todo expoente menor que e.
Caso base: vale para e = 1, pois todos os p 1
n umeros menores que p sao primos em relacao
`a p.
Para cada k = 1, . . . , e 1, devemos remover
do intervalo entre p
e1
e p
e
todos os n umeros
da forma d p
k
, onde p
ek1
d < p
ek
e
mdc(d, p) = 1. Por hipotese, existe (p
k
) valo-
res para d em cada um destes intervalos. Como
todos os primos em relacao `a p
ek
sao primos em
rela cao `a p
e
, para cada n umero removido no in-
tervalo entre p
e1
e p
e
, um novo n umero menor
que p
e1
e contabilizado como primo em relacao
`a p
e
. Assim, (p
e
) = p
e
p
e1
= p
e1
(p 1).
28
Teorema de Euler. Para todo inteiro positivo m,
e para qualquer a primo em relacao `a m, temos que
a
(m)
1 (mod m).
Prova: Sejam d
1
, . . . , d
(m)
os n umeros primos
em relacao `a m.
Como a e d
i
sao primos em rela cao ` a m, temos
que a d
i
e primo em relacao ` a m (ou seja,
mdc(ad
i
, m) = 1).
Vamos agora mostrar que ad
i
mod m e primo
em relacao `a m (ou seja, ad
i
mod m e igual a
algum d
j
). Se ad
i
< m, isto decorre de ad
i
mod
m = ad
i
. Caso contr ario, pelo algoritmo de Eu-
clides, mdc(ad
i
mod m, m) = mdc(ad
i
, m) = 1.
Os valores ad
i
mod m sao distintos, pois se
ad
i
ad
j
, para algum par i ,= j, teramos
d
i
d
j
pois a pode ser cancelado por ser primo
em relacao `a m (contradi cao!).
Portanto existe uma bije cao entre os valores
ad
i
mod m e os valores d
i
. Assim,
(ad
1
) . . . (ad
(m)
) d
1
. . . d
(m)
.
Como os d
i
s podem ser cancelados (pois sao
primos em rela cao a m), obtemos a
(m)
1.
Vamos considerar geradores de n umeros aleat orios
congruente lineares multiplicativos, denidos pela re-
correncia:
x
n
= (a x
n1
) mod m.
Os par ametros deste gerador sao a (multiplica-
dor), m (modulo) e x
0
(semente).
Este gerador e o mais popular e o mais bem
compreendido.
Resolvendo a recorrencia obtemos
x
n
= (a
n
x
0
) mod m.
O valor zero n ao pode ser gerado, pois caso
contr ario toda a sequencia seguinte seria nula.
Portanto, este gerador ciclos com no m aximo
m 1 elementos distintos (ou seja, o perodo e
no maximo m 1).
Se d e um divisor de m e x
n
, ent ao todos os elementos
seguintes serao m ultiplos de d, pois dk
1
mod dk
2
=
d(k
1
mod k
2
).
Para evitar esta propriedade indesejada, x
n
de-
veria ser primo em rela cao `a m para todo n.
Isto limita o perodo em (m).
Se m e primo, podemos ter um perodo igual a
m 1 (caso base do Lema A).
Lemma B. Considere as series:
X
n
= (aX
n1
+ c) mod md,
Y
n
= [(a mod m)(Y
n1
mod m)+(c mod m)] mod m,
com Y
0
= X
0
mod m. Ent ao, Y
n
= X
n
mod m para
n 0.
Prova: indu cao em n. Caso base, Y
0
= X
0
mod
m. Hip otese: vale para ndices menores que n.
Aplicando a hip otese:
Y
n
= [(a mod m)(X
n1
mod m)+(c mod m)] mod m
X
n
= (aX
n1
+c) mod md = aX
n1
+c qmd,
para determinado inteiro q. Portanto,
X
n
aX
n1
+ c (mod m).
aX
n1
+ c = (q
a
m + a mod m)(q
X
m +
X
n1
mod m) + (q
c
m + c mod m), para de-
terminados inteiros q
a
, q
X
e q
c
. Portanto,
aX
n1
+ c (a mod m)(X
n1
mod m) +
(c mod m) (mod m).
Com isso concluimos que Y
n
X
n
(mod m).
29

Вам также может понравиться