Alguns T´
opicos de Matem´
atica Discreta
Ana Paula Tom´as
Departamento de Ciˆencia de Computadores Faculdade de Ciˆencias do Porto
Conte´
udo
1 Conjuntos 1
1.1 Opera¸c˜oes com Conjuntos . . . 2
2 Representa¸c˜ao de N´umeros em Computador 7 2.1 Sistema de Representa¸c˜ao Posicional . . . 8
2.1.1 Rela¸c˜ao entre bin´ario, octal e hexadecimal . . . 11
2.1.2 Adi¸c˜ao e multiplica¸c˜ao na base b . . . 12
2.1.3 Representa¸c˜ao de n´umeros com um n´umero fixo de d´ıgitos . . . 15
2.1.4 Representa¸c˜ao de n´umeros negativos . . . 16
2.2 Adi¸c˜ao e Subtrac¸c˜ao em n Bits . . . 19
2.2.1 Adi¸c˜ao e subtrac¸c˜ao bin´aria de inteiros n˜ao negativos . . . 19
2.2.2 Adi¸c˜ao de inteiros em complemento para 2 . . . 20
2.2.3 Subtrac¸c˜ao de inteiros em complemento para 2 . . . 20
2.3 Representa¸c˜ao em V´ırgula Fixa . . . 21
2.4 Representa¸c˜ao em V´ırgula Flutuante . . . 21
3 Algumas No¸c˜oes de Divisibilidade 23 3.1 Bases de Numera¸c˜ao e Crit´erios de Divisibilidade . . . 23
3.2 No¸c˜ao de Divisor e de M´ultiplo . . . 25
3.3 Factoriza¸c˜ao em Primos . . . 26
3.3.1 Determina¸c˜ao de primos: crivo de Erast´otenes . . . 27
3.3.2 C´alculo de divisores por an´alise da factoriza¸c˜ao em primos . . . 28
3.4 M´aximo Divisor Comum . . . 28
3.4.1 C´alculo do m´aximo divisor comum pelo algoritmo de Euclides . . . 29
3.5 M´ınimo M´ultiplo Comum . . . 31
4 Indu¸c˜ao Matem´atica 33
4.1 Princ´ıpio de Indu¸c˜ao Matem´atica . . . 33
4.1.1 Erros frequentes . . . 37
4.2 Indu¸c˜ao Forte . . . 40
4.2.1 Outras formula¸c˜oes do princ´ıpio de indu¸c˜ao . . . 42
5 Rela¸c˜oes Bin´arias 43 5.1 Rela¸c˜oes Bin´arias de A em B . . . 43
5.1.1 Opera¸c˜oes com rela¸c˜oes bin´arias . . . 43
5.1.2 Matriz duma rela¸c˜ao bin´aria . . . 45
5.1.3 Fun¸c˜oes de A em B . . . 47
5.2 Rela¸c˜oes Bin´arias Definidas num Conjunto . . . 47
5.2.1 Propriedades das rela¸c˜oes bin´arias definidas em A . . . 48
5.2.2 Grafo da rela¸c˜ao . . . 48
5.3 Rela¸c˜oes de Compatibilidade e de Equivalˆencia . . . 50
5.3.1 Classes de equivalˆencia . . . 51
5.3.2 Parti¸c˜oes e rela¸c˜oes de equivalˆencia . . . 53
5.3.3 Classes de Compatibilidade . . . 55
5.4 Rela¸c˜oes de Ordem Parcial . . . 57
5.4.1 Diagrama de Hasse . . . 58
5.4.2 M´aximos, m´ınimos, supremo, ´ınfimo, majorantes e minorantes . . . . 59
5.5 Fechos duma Rela¸c˜ao para uma Propriedade . . . 60
5.5.1 Fecho transitivo e percursos em grafos . . . 62
5.5.2 Fecho transitivo duma rela¸c˜ao definida num conjunto finito . . . 68
6 Grafos e Multigrafos 71 6.1 Grafos Dirigidos . . . 71
6.1.1 Multigrafos dirigidos. . . 73
6.1.2 Grafos, Percursos e rela¸c˜oes bin´arias . . . 74
6.2 Grafos N˜ao Dirigidos . . . 75
6.2.1 Grafos Conexos . . . 77
6.2.2 Condi¸c˜ao necess´aria para um grafo ser conexo . . . 78
6.3 Arvores . . . .´ 79
6.3.1 Arvores com ra´ız . . . .´ 81
6.4 Percursos Eulerianos e Hamiltonianos . . . 82
6.5 Grafos Planares . . . 83
6.7 Colora¸c˜ao de Grafos . . . 85
6.8 Grafos com Valores Associados aos Ramos . . . 86
6.8.1 Determina¸c˜ao da distˆancia m´ınima . . . 87
Pref´
acio
Estes apontamentos tˆem por base material elaborado em anos anteriores para disciplinas da licenciatura em Ciˆencia de Computadores [5, 6, 7], o qual foi agora revisto e nalguns t´opicos completado para servir de apoio `a disciplina de Matem´atica para Ciˆencia de Computadores, no ano lectivo de 2005/06. N˜ao visam substituir a leitura da bibliografia recomendada pelos docentes e n˜ao cobrem actualmente todos os t´opicos abordados na disciplina.
Cap´ıtulo 1
Conjuntos
Neste cap´ıtulo vamos essencialmente recordar ou introduzir alguma da nota¸c˜ao que ´e usada para conjuntos. Tomamos a no¸c˜ao de conjunto como primitiva, convencionando que um conjunto ´e constitu´ıdo por elementos – objectos materiais ou entes abstractos que tˆem alguma propriedade em comum (no caso extremo, a de pertencerem todos a esse conjunto). Os conjuntos podem ser vazios (i.e. sem elementos). Em geral, usamos letras mai´usculas para designar conjuntos e min´usculas para referir os seus elementos. Para indicar que a ´e um elemento do conjunto A escrevemos a∈ A. Os conjuntos podem ser especificados em extens˜ao – exibindo todos os elementos que os constituem – ou indicando a propriedade que caracteriza os seus elementos – defini¸c˜ao em compreens˜ao. Por exemplo,{1, 2, 3, 4} e {n | n ∈ Z+∧n ≤ 4}. Nota¸c˜ao. Sejam A e B conjuntos.
a∈ A a pertence a A, a ´e elemento de A a /∈ A a n˜ao pertence a A
A = B igualdade de conjuntos (qualquer que seja x, x∈ A se e s´o se x ∈ B)
A⊆ B A contido em B, A subconjunto de B (qualquer que seja x, se x∈ A ent˜ao x ∈ B)
A⊇ B A cont´em B, B⊆ A A⊂ B A contido propriamente em B, A subconjunto pr´oprio de B A⊆ B ∧ A 6= B A⊃ B A cont´em propriamente B A6= B A6⊆ B ou B 6⊆ A ∅ ou {} conjunto vazio
1.1. OPERAC¸ ˜OES COM CONJUNTOS 2
O conjunto dos subconjuntos de A, representa-se por P(A) ou 2A. Qualquer
con-junto A pertence ao seu concon-junto de subconcon-juntos, isto ´e A∈ P(A). Por exemplo, P({1, 2, 3}) = {∅, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}
O conjunto P({1, 2, 3}) tem 23 elementos. Tamb´em se pode verificar que P(P({1, 2, 3}))
tem 223 elementos. Se A tem n elementos, P(A) tem 2n elementos.
Nestes apontamentos, N representa o conjunto dos inteiros n˜ao negativos (incluindo assim tamb´em 0).
N inteiros n˜ao negativos (em vez de N0)
Z inteiros
Q racionais
R reais
R+0 reais n˜ao negativos R+ reais positivos R− reais negativos
Um conjunto A n˜ao vazio ´e finito se e s´o se existir uma bijecc˜ao de A em{x ∈ N | x < n} para algum n∈ N. Nesse caso, n ´e o cardinal (n´umero de elementos) de A. Usamos |A| (ou, alternativamente, #A) para designar o cardinal de A. O cardinal do conjunto vazio ´e zero.
A prop´osito de quest˜oes de nota¸c˜ao, ´e de salientar que {n | n ∈ N}
{n}, com n ∈ N
denotam conjuntos diferentes: o primeiro ´e N e o segundo ´e constitu´ıdo por um ´unico inteiro (que est´a a ser representado pela letra n).
1.1
Opera¸
c˜
oes com Conjuntos
A intersec¸c˜ao de A com B representa-se por A∩ B, e ´e o conjunto dos elementos que pertencem a ambos os conjuntos.
A∩ B = {x | x ∈ A e x ∈ B}
A uni˜ao de A com B que se representa por A∪ B, ´e o conjunto dos elementos que pertencem a pelo menos um dos conjuntos.
1.1. OPERAC¸ ˜OES COM CONJUNTOS 3
O complementar de B em A representa-se por A\ B, e ´e o conjunto dos elementos de A que n˜ao pertencem a B.
A\ B = {x | x ∈ A e x /∈ B}
Quando est´a implic´ıto um dado universoU, chama-se complementar de A, e representa-se por A, ao complementar de A emU, ou seja a U \ A.
Exemplo 1 Vamos provar que A\ (B ∪ C) = (A \ B) ∩ (A \ C). Para tal vamos mostrar que x∈ A \ (B ∪ C) ⇔ x ∈ (A \ B) ∩ (A \ C), qualquer que seja x.
x∈ A \ (B ∪ C) ⇔ x ∈ A ∧ x /∈ B ∪ C (por def. de diferen¸ca) ⇔ x ∈ A ∧ (x /∈ B ∧ x /∈ C) (por def. uni˜ao) ⇔ x ∈ A \ B ∧ x ∈ A \ C (por def. de diferen¸ca) ⇔ x ∈ (A \ B) ∩ (A \ C) (por def. intersec¸c˜ao)
Exemplo 2 Quaisquer que sejam os conjuntos A, B⊆ U, tem-se A ∪ B = A ∩ B. De facto, se x∈ A ∪ B ent˜ao, por defini¸c˜ao de complementar, x /∈ A ∪ B. Logo, x /∈ A e x /∈ B. Mas, x /∈ A sse x ∈ A. E, x /∈ B sse x ∈ B. Ent˜ao, x ∈ A e x ∈ B. Donde, x ∈ A ∩ B. Mostr´amos assim que A∪ B ⊆ A ∩ B. Reciprocamente,
x∈ A ∩ B =⇒ (x ∈ A ∧ x ∈ B) (por def. ∩)
=⇒ (x /∈ A ∧ x /∈ B) (por def. complementar) =⇒ x /∈ (A ∪ B) (por def. ∪)
=⇒ x ∈ A ∪ B (por def. complementar) ou seja, A∪ B ⊇ A ∩ B.
Exerc´ıcio 1.1.1 Suponha que os conjuntos indicados s˜ao subconjuntos do universoU. Sendo A, B e C subconjuntos deU quaisquer, mostre cada uma das propriedades:
(a) A\ B = A ∩ B = B \ A (j)∅ = U (r)U = ∅ (b) A\ B = ∅ sse A ⊆ B (k) A\ A = ∅ (s) A\ ∅ = A (c) A\ B = A sse A ∩ B = ∅ (l) A = A (t) A∪ U = U (d) (A\ B) ∪ (B \ A) = (A ∪ B) \ (B ∩ A) (m) A∪ A = U (u) A∩ A = ∅ (e) (A∩ B) ∩ C = A ∩ (B ∩ C) (n) A∩ U = A (v) A∩ A = A (f) (A∪ B) ∪ C = A ∪ (B ∪ C) (o) A∪ ∅ = A (g) (A∪ B) ∩ C = (A ∩ C) ∪ (B ∩ C) (h) (A∩ B) ∪ C = (A ∪ C) ∩ (B ∪ C) (p) A∪ B = A ∩ B (i) A\ (B ∪ C) = (A \ B) ∩ (A \ C) (q) A⊆ B sse B ⊆ A
1.1. OPERAC¸ ˜OES COM CONJUNTOS 4
Exemplo 3 A t´ıtulo de exemplo, vamos analisar a veracidade ou falsidade das afirma¸c˜oes seguintes e justific´a-la.
1. Qualquer que seja x∈ Z, existe y ∈ Z tal que x ≤ y e x 6= y. ∀x ∈ Z ∃y ∈ Z (x ≤ y ∧ x 6= y)
A afirma¸c˜ao ´e verdadeira porque, sendo o conjunto dos inteiros infinito, se x ´e inteiro, x + 1 tamb´em ´e um inteiro e x + 1 ´e superior a x. Ou seja, dado um x qualquer, se considerarmos que y ´e x + 1, satisfazemos a condi¸c˜ao (x ≤ y ∧ x 6= y). Note que y depender´a de x.
2. Existe y∈ Z tal que para todo x ∈ Z se tem x ≤ y. ∃y ∈ Z ∀x ∈ Z x ≤ y
A afirma¸c˜ao ´e falsa porque em particular se x fosse y+1 ent˜ao teriamos que ter y+1≤ y, que n˜ao ´e satisfaz´ıvel (j´a que ´e equivalente a 1≤ 0).
3. Existe um inteiro n˜ao negativo que n˜ao excede qualquer outro inteiro n˜ao negativo.
∃x ∈ Z+0 ∀y ∈ Z+0 x≤ y
A afirma¸c˜ao ´e verdadeira. O inteiro 0 ´e menor ou igual que cada um dos inteiros n˜ao negativos. Aqui, Z+0 denota o conjunto dos inteiros n˜ao negativos, o qual identific´amos tamb´em por N.
4. Existe x∈ Z tal que x ´e maior do que qualquer outro inteiro y. ∃x ∈ Z ∀y ∈ Z x > y
A afirma¸c˜ao ´e falsa (an´aloga `a 2). 5. Para todo A⊆ Z, tem-se P(A) = {∅}.
A afirma¸c˜ao ´e falsa, porque {1} ´e um subconjunto de Z e P({1}) = {∅, {1}} 6= {∅}. 6. Para todo A⊆ Z, se A = ∅ ent˜ao P(A) = {∅}.
A afirma¸c˜ao ´e verdadeira. S´o existe um subconjunto de Z que ´e vazio, e P(∅) = {∅}. Note que {∅} ´e um conjunto que tem um elemento. Esse elemento ´e ∅, ou seja, ´e o conjunto vazio.
1.1. OPERAC¸ ˜OES COM CONJUNTOS 5
7. Tem-se P(A) = ∅, para algum A ⊆ Z.
∃A (A ⊆ Z ∧ P(A) = ∅)
A afirma¸c˜ao ´e falsa, porque qualquer que seja o subconjunto A de Z, o conjunto vazio ´e um elemento deP(A).
8. Quaisquer que sejam x, y∈ Z, tem-se x ≤ y ou y ≤ x. ∀x ∈ Z ∀y ∈ Z (x ≤ y ∨ y ≤ x)
Dizer que x≤ y equivale a dizer que existe um inteiro n˜ao negativo z tal que y = x + z. ´
E verdade que (x≤ y ∨ y ≤ x), quaisquer que sejam os inteiros x e y.
Como x− y ´e inteiro, quaisquer que sejam x e y, se x − y ´e n˜ao negativo, ent˜ao y ≤ x pois x = y + (x− y). Se x − y ´e negativo, ent˜ao y − x ´e um inteiro positivo, e como y = x + (y− x), tem-se x ≤ y.
9. Qualquer que seja A⊆ Z, se A 6= {−1, 2, 3} ent˜ao 4 ∈ A. ∀A ( (A ⊆ Z ∧ A 6= {−1, 2, 3}) ⇒ 4 ∈ A) )
Falso. Existe um subconjunto de Z que ´e diferente de{−1, 2, 3} e que n˜ao tem o 4. Por exemplo, o conjunto vazio.
10. Quaisquer que sejam A, B⊆ Z, se 5 ∈ A \ B ent˜ao 5 ∈ A. ∀A ∀B( (A ⊆ Z ∧ B ⊆ Z ∧ 5 ∈ A \ B) ⇒ 5 ∈ A )
A afirma¸c˜ao ´e verdadeira. Quaisquer que sejam os subconjuntos A e B de Z, tem-se 5∈ A \ B se e s´o se 5 ∈ A e 5 /∈ B. Logo, se 5 ∈ A \ B ent˜ao 5 ∈ A.
11. Para todo o x∈ Z, e quaisquer que sejam A, B ⊆ Z, se x ∈ A \ B ent˜ao x ∈ A. A afirma¸c˜ao ´e verdadeira. A justifica¸c˜ao ´e semelhante `a dada para a afirma¸c˜ao anterior (claro que ´e necess´ario falar em x e n˜ao em 5!).
12. Existe x∈ Z tal que x ∈ A \ B, quaisquer que sejam A, B ⊆ Z. Esta afirma¸c˜ao pode ser traduzida pela express˜ao l´ogica
∃x (x ∈ Z ∧ ( ∀A ∀B ( (B ⊆ Z ∧ A ⊆ Z) ⇒ x ∈ A \ B) )) a qual escrevemos por vezes como
1.1. OPERAC¸ ˜OES COM CONJUNTOS 6
que ´e falsa. Quaisquer que sejam os conjuntos A e B se A = B ent˜ao A\B = ∅. Assim, se tomarmos, por exemplo, A = B ={1}, os conjuntos A e B s˜ao subconjuntos de Z e n˜ao existe qualquer inteiro x tal que x∈ A \ B.
13. 2 + 2 = 4 ou √2∈ Z.
A afirma¸c˜ao ´e verdadeira porque embora √2 /∈ Z, ´e verdade que 2 + 2 = 4. 14. Se 2 + 26= 4 ent˜ao √2∈ Z.
A afirma¸c˜ao ´e equivalente a “2 + 2 = 4 ou √2∈ Z”. 15. Se √2∈ Z ent˜ao 2 + 2 6= 4.
A afirma¸c˜ao ´e equivalente a “√2 /∈ Z ou 2 + 2 6= 4”, e como √2 /∈ Z, a afirma¸c˜ao ´e verdadeira.
16. √26∈ Z ou 2 + 2 6= 4.
Cap´ıtulo 2
Representa¸
c˜
ao de N´
umeros em
Computador
Do mesmo modo que “5692 segundos”, “94 minutos e 52 segundos”, “1 hora, 34 minutos e 52 segundos” s˜ao designa¸c˜oes ou representa¸c˜oes diferentes da mesma entidade, tamb´em 5692(10), 13074(8) e 1011000111100(2) o s˜ao. De facto, 1 34 52(60) ≡ 1h3405200≡ 1 × 602+ 34× 601+ 52× 600 5 6 9 2(10) ≡ 5 × 103+ 6× 102+ 9× 101+ 2× 100 1 3 0 7 4(8) ≡ 1 × 84+ 3× 83+ 0× 82+ 7× 81+ 4× 80 1 0 1 1 0 0 0 1 1 1 1 0 0(2) ≡ 1 × 212+ 0× 211+ 1× 210+ 1× 29+ 0× 28+ 0× 27+ 0× 26+ 1× 25+ 1× 24+ 1× 23+ 1× 22+ 0× 21+ 0× 20 dizendo-se que 60, 10, 8 e 2 s˜ao as bases de numera¸c˜ao, respectivas. Habitualmente, escreve-se 5692em vez de 5692(10), porque a base mais usual para representa¸c˜ao de inteiros ´e a base 10, designada por decimal. As bases 8 e 2 s˜ao designadas por octal e bin´aria. Se considerarmos as potˆencias de 2,
212 211 210 29 28 27 26 25 24 23 22 21 20
4096 2048 1024 512 256 128 64 32 16 8 4 2 1
podemos observar que 5692 = 4096+1596 = 4096+(1024+572) = 4096+1024+(512+60) = . . . = 4096 + 1024 + 512 + 32 + 16 + 8 + 4 = 1011000111100(2).
Analogamente, se considerarmos as potˆencias de 3,
38 37 36 35 34 33 32 31 30
2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 8
podemos verificar que 5692 = 21210211(3). De facto, 5692 = 2× 2187 + 1318 = 2 × 2187 +
(1× 729 + 589) = 2 × 2187 + 1 × 729 + (2 × 243 + 103) = . . . = 2 × 2187 + 1 × 729 + 2 × 243 + 1× 81 + 2 × 9 + 1 × 3 + 1 = 21210211(3).
2.1
Sistema de Representa¸
c˜
ao Posicional
Num sistema de numera¸c˜ao de base b usam-se b s´ımbolos diferentes para b d´ıgitos (de 0 a b− 1). Os n´umeros s˜ao representados por uma sequˆencia de d´ıgitos.
Os d´ıgitos na base 10 s˜ao 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Os d´ıgitos na base 2 s˜ao 0 e 1, e normalmente s˜ao designados por bits. Por exemplo,
1011102 = 1× 25+ 0× 24+ 1× 23+ 1× 22+ 1× 21+ 0× 20
Se a = rmbm+ rm−1bm−1+ . . . + r2b2+ r1b1+ r0b0 com rm 6= 0 e 0 ≤ ri ≤ b − 1 para
0≤ i ≤ m ent˜ao
a≡ rm. . . r2r1r0 (b)
´e a representa¸c˜ao de a na base b. Os coeficientes r0, r1, r2, . . . rm chamam-se d´ıgitos de
repre-senta¸c˜ao de a na base b, sendo r0 o d´ıgito menos significativo e rm o d´ıgito mais significativo.
A representa¸c˜ao ´e ´unica, o que ´e consequˆencia da unicidade do quociente e resto da divis˜ao inteira.
Proposi¸c˜ao 1 (divis˜ao euclideana de inteiros) Quaisquer que sejam a ∈ Z e b ∈ Z+ existe um e um s´o q∈ Z e um e um s´o r ∈ Z tal que b = aq + r e 0 ≤ r < b.
A q chama-se quociente e a r resto da divis˜ao inteira de a por b, sendo importante a condi¸c˜ao 0≤ r < b para garantir a unicidade.
Corol´ario 1.1 Quaisquer que sejam a ∈ Z+ e b ∈ Z+\ {1}, existem inteiros ´unicos r 0, r1,
r2, . . . rm tais que a = rmbm+ rm−1bm−1+ . . . + r2b2+ r1b1+ r0b0, rm 6= 0 e 0 ≤ ri≤ b − 1
para 0≤ i ≤ m.
Prova: Sejam a e b inteiros com a > 0 e b > 1. Tem-se ou a < b ou a≥ b. Se a < b ent˜ao a = 0b + a. Portanto, 0 < r0= a.
Se a≥ b ent˜ao, por defini¸c˜ao de divis˜ao inteira, existem q0e r0unicos tais que a = bq´ 0+r0,
com 0 ≤ r0 < b. Se q0 < b, toma-se r1 = q0 e obtem-se a = r1b + r0. Se q0 ≥ b, ent˜ao o
processo repete-se agora para q0. Ou seja, q0= bq1+ r1, com 0≤ r1 < b. Logo,
2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 9
Se q1< b, toma-se r2 = q0 e obtem-se a = b2r2+br1+r0. Se q1 ≥ b, ent˜ao o processo repete-se
agora para q1, e sucessivamente. O processo termina porque a > q0 > q1 > . . . e qualquer qi
´e um inteiro n˜ao negativo. ut
Esta prova indica um algoritmo para determina¸c˜ao da representa¸c˜ao dum inteiro a numa base b. Exemplo 4 Tem-se 125(10) = 53 = 1000 (5) = 26 + 25 + 24+ 23+ 22 + 20 = 1111101(2) = 175(8) = 7D(16). De facto, 125 5 0 25 5 r0 0 5 5 r1 0 1 r2 r3 125 2 1 62 2 r0 0 31 2 r1 1 15 2 r2 1 7 2 r3 1 3 2 r4 1 1 r5 r6 125 8 5 15 8 r0 7 1 r1 r2 125 16 13 7 r0 r1
No entanto, quando se conhecem potˆencias da base, pode ser mais f´acil determinar a representa¸c˜ao por outro m´etodo. Por exemplo, para a base 2,
46(10) = 32(10)+ 8(10)+ 4(10) + 2(10) = 101110(2)
enquanto se se aplicar o algoritmo dado pela prova anterior teria
46 2 0 23 2 r0 1 11 2 r1 1 5 2 r2 1 2 2 r3 0 1 r4 r5 46(10) = 23× 2 + 0 = (11 × 2 + 1) × 2 + 0 = ((5 × 2 + 1) × 2 + 1) × 2 + 0 = (((2× 2 + 1) × 2 + 1) × 2 + 1) × 2 + 0 = ((((2× 1 + 0) × 2 + 1) × 2 + 1) × 2 + 1) × 2 + 0 = 1× 25+ 0× 24+ 1× 23+ 1× 22+ 1× 21+ 0× 20 = 101110(2)
2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 10
Pode interessar tamb´em saber qual a representa¸c˜ao decimal dum inteiro dado numa base b. Para a obter, bastar´a aplicar a defini¸c˜ao e efectuar os c´alculos na base 10. 101110(2) = 1× 25+ 0× 24+ 1× 23+ 1× 22+ 1× 21+ 0× 20 = 32 + 8 + 4 + 2 = 46(10) 101110(3) = 1× 35+ 0× 34+ 1× 33+ 1× 32+ 1× 31+ 0× 30 = 162 + 27 + 9 + 3 = 201(10)
Para al´em da base 2, s˜ao bastante usadas em Computa¸c˜ao as bases 8 (octal) e 16 (hexa-decimal). Os d´ıgitos em octal s˜ao 0, 1, 2, 3, 4, 5, 6 e 7. Embora os restos da divis˜ao por 16 sejam 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,. . . , 15, por conven¸c˜ao, os d´ıgitos em hexadecimal a partir de 10 s˜ao representados pelas letras mai´usculas de A a F. Deste modo n˜ao haver´a qualquer ambiguidade de representa¸c˜ao (por exemplo, fica claro que o hexadecimal 15 designa o decimal 1× 16 + 5 e F o decimal 15). Os n´umeros representados na base octal s˜ao por vezes indexados por (o), por exemplo 235(o), e os representados na base hexadecimal por (h), por exemplo F 15A(h).
Designa¸c˜ao Base D´ıgitos
Bin´ario 2 0 a 1
Octal 8 (=23) 0 a 7
Hexadecimal 16 (=24) 0 a 9, A, B, C, D, E, F
Decimal 10 0 a 9
Exemplo 5 A sequˆencia 78412 n˜ao pode representar nenhum inteiro na base 4 porque 7, 8 e 4 n˜ao s˜ao d´ıgitos base 4. A sequˆencia 001231 n˜ao ´e representa¸c˜ao numa base de numera¸c˜ao, no sentido acima definido, porque teria zeros n˜ao significativos. A sequˆencia 123100 pode representar um inteiro em qualquer base b superior a 4.
Exerc´ıcio 2.1.1 Converter para bin´ario: 153(10), 153(6), 153(8), 153(16).
Exerc´ıcio 2.1.2 Converter para hexadecimal: 153(10), 151323(10), 153(8), 1010101111(2).
Exerc´ıcio 2.1.3 Converter para octal: 1123(4), 151323(10), 153(8), 1010101111(2). Exerc´ıcio 2.1.4 Converter para a base 251 e 666 os seguintes n´umeros em decimal:
1383, 1498, 1500, 1580, 1640
2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 11
2.1.1 Rela¸c˜ao entre bin´ario, octal e hexadecimal
Seja por exemplo, 101011110(2) um bin´ario que se pretende converter para octal. Como foi
visto, o inteiro que esse bin´ario representa ´e
1× 28+ 0× 27+ 1× 26+ 0× 25+ 1× 24+ 1× 23+ 1× 22+ 1× 2 + 0
ou seja 350. A representa¸c˜ao octal correspondente pode ser obtida agrupando os d´ıgitos bin´arios 3 a 3: uma vez que 8 = 23 e 82= 26, tem-se
26(1×22+ 0×2+1×2)+23(0×22+ 1×2+1)+(1×22+ 1×2+0) = 82×5+8×3+6 = 536(2) Em geral se ak. . . a5a4a3a2a1a0(2), sendo k≥ 0, representa o inteiro
ak2k+ . . . + a525+ a424+ a323+ a222+ a121+ a020
ent˜ao a representa¸c˜ao em octal do mesmo inteiro pode ser obtida da forma descrita: ak2k+ . . . + 23(a522+ a421+ a320) + (a222+ a121+ a020) =
ak2k+ . . . + 8(a522+ a421+ a320) + (a222+ a121+ a020)
Notar que na express˜ao resultante, qualquer potˆencia de 8 tem por coeficiente ai+222+ ai+12 + ai
para algum i, o qual ´e sempre n˜ao negativo e inferior a 8, podendo assim ser d´ıgito da representa¸c˜ao octal. A cada d´ıgito octal correspondem 3 d´ıgitos em bin´ario. Do mesmo modo, a cada d´ıgito hexadecimal correspondem 4 d´ıgitos em bin´ario. Assim, para converter um bin´ario a hexadecimal, agrupam-se os seus d´ıgitos em grupos de 4 (da direita para a esquerda) correspondendo a cada um desses grupos um d´ıgito hexadecimal. Por exemplo,
101011110(2) ⇒ 1 | 0101 | 1110 ⇒ 1 | 5 | E ⇒ 15E(h)
Para converter um bin´ario a octal procede-se de modo idˆentico mas formando grupos de 3. Por exemplo,
101011110(2) ⇒ 101 | 011 | 110 ⇒ 5 | 3 | 6 ⇒ 536(o)
Inversamente, se se pretender converter de hexadecimal a bin´ario basta associar a cada um dos d´ıgitos hexadecimal o grupo de 4 d´ıgitos bin´arios correspondente. Por exemplo,
3AC3A(h) ⇒ 0011 | 1010 | 1100 | 0011 | 1010 ⇒
11| 1010 | 1100 | 0011 | 1010 ⇒ 111010110000111010(2)
Notar a elimina¸c˜ao dos zeros n˜ao significativos. O que se acaba de ilustrar ´e um caso particular da proposi¸c˜ao seguinte.
2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 12
Proposi¸c˜ao 2 Se z ´e um inteiro positivo, a cada d´ıgito (com poss´ıvel excep¸c˜ao do mais signi-ficativo) da representa¸c˜ao de z na base bncorresponde um grupo de n d´ıgitos na representa¸c˜ao
de z na base b, qualquer que seja n inteiro positivo. Mais concretamente, se akak−1. . . atnatn−1. . . a2na2n−1. . . anan−1. . . a1a0
com k ≥ 0 ´e a representa¸c˜ao na base b de um inteiro positivo z ent˜ao, a representa¸c˜ao do mesmo inteiro na base bn ´e
wtwt−1. . . w1w0
sendo t + 1 o n´umero de blocos de n d´ıgitos da representa¸c˜ao de z na base b (podendo o ´ultimo ser completado por zeros n˜ao significativos), e wi (i≤ t) o d´ıgito da base bn que representa o
inteiro a2in−1. . . ain+1ain(b) (representa¸c˜ao base b a menos de zeros n˜ao significativos).
Exemplo 6 Por exemplo, para converter 100313210(4) para a base 16, agrupam-se os d´ıgitos 2 a 2, da direita para a esquerda, pois 16 = 42.
100313210(4) = 01| 00 | 31 | 32 | 10 = 10DE4(16)
Exerc´ıcio 2.1.6 Repita os exerc´ıcios 2.1.1 a 2.1.3.
Exerc´ıcio 2.1.7 Mostre a proposi¸c˜ao anterior. Comece por mostrar que wtwt−1. . . w1w0
conforme descrito pode ser representa¸c˜ao base bnde z; use em seguida o facto da representa¸c˜ao numa base ser ´unica para concluir que wtwt−1. . . w1w0 ´e a representa¸c˜ao de z. Mostre depois
que se wtwt−1. . . w1w0 representa z na base bn, a representa¸c˜ao de z na base b ´e
akak−1. . . atnatn−1. . . a2na2n−1. . . anan−1. . . a1a0
2.1.2 Adi¸c˜ao e multiplica¸c˜ao na base b
Recorde como se adicionam dois inteiros representados na base 10, calculando por exemplo 987654 + 73561. 987654 + 73561 . . .5 (vai 0) 987654 + 73561 . . .15 (vai 1) 987654 + 73561 . . .215 (vai 1) 987654 + 73561 . . .1215 (vai 1) 987654 + 73561 . . .61215 (vai 1) 987654 + 73561 . . .061215 (vai 1) 987654 + 73561 1061215
2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 13
Algoritmo para Adi¸c˜ao (base 10). Se x e y s˜ao inteiros positivos representados na base 10 por xkxk−1. . . x1x0 e ymym−1. . . y1y0 respectivamente ent˜ao a representa¸c˜ao na
base 10 de x + y, digamos spsp−1. . . s1s0, pode ser obtida da forma seguinte.
xkxk−1. . . x1x0
+ ymym−1ym−2. . . y1y0
. . . s0
Caso x0+ y0 < 10, toma-se s0= x0+ y0 e repete-se o processo para os d´ıgitos seguintes.
Sen˜ao, s0 ´e tal que x0+ y0 = 1s0, adicionando-se 1 a x1+ y1 repetindo-se o processo (global)
para os d´ıgitos seguintes. Quando k < m (respectivamente m < k) pode-se considerar xi= 0,
i ≥ k (respectivamente yi = 0, i ≥ m). Notar que p = max(k, m) ou p = max(k, m) + 1
sendo neste ´ultimo caso sp = 1.
Adi¸c˜ao (base 3). 2102(3)+ 21(3) = (2× 33+ 1× 32+ 0× 31+ 2× 30) + (2× 31+ 1× 30) = 2× 33+ 1× 32+ (0 + 2)× 31+ (2 + 1)× 30= 2× 33+ 1× 32+ (0 + 2)× 31+ (1× 3 + 0) × 30 = 2× 33 + 1× 32 + (0 + 2 + 1)× 31 + 0× 30 = 2 × 33 + (1 + 1)× 32 + 0× 31 + 0× 30 = 2× 33+ 2× 32+ 0× 31+ 0× 30. 2102(3) + 21(3) . . . 0(3) (vai 1) 2102(3) + 21(3) . . . 00(3) (vai 1) 2102(3) + 21(3) . . . 200(3) (vai 0) 2102(3) + 21(3) 2200(3)
Exerc´ıcio 2.1.8 Justifique que se x e y s˜ao inteiros positivos representados na base b por xkxk−1. . . x1x0 e ymym−1. . . y1y0 respectivamente ent˜ao spsp−1. . . s1s0, a representa¸c˜ao na
base b de x + y, pode ser obtida por um processo an´alogo ao descrito acima, ou seja, seguindo o algoritmo habitual. Comece por notar que quando soma xi com yi o resultado ´e sempre
menor ou igual que 2b− 2, e portanto tanto xi + yi como xi + yi + 1 se representa como
0si ou 1si (pelo que ou “vai 0” ou “vai 1”), qualquer que seja i. Depois, use a defini¸c˜ao de
representa¸c˜ao na base b, `a semelhan¸ca do que se fez acima para b = 3.
Os algoritmos usuais para adi¸c˜ao e multiplica¸c˜ao base 10 s˜ao v´alidos quando se usam representa¸c˜oes em qualquer outra base b, embora sejam obviamente diferentes as tabuadas dessas opera¸c˜oes se escrevermos os resultados na base b. O mesmo se pode dizer para a subtrac¸c˜ao (quando o aditivo ´e maior do que subtractivo) e para a divis˜ao inteira.
2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 14
Tabuadas de adi¸c˜ao e multiplica¸c˜ao para bin´ario:
+2 0 1 0 0 1 1 1 10 ×2 0 1 0 0 0 1 0 1
Tabuadas de adi¸c˜ao e multiplica¸c˜ao para base 3:
+3 0 1 2 0 0 1 2 1 1 2 10 2 2 10 11 ×3 0 1 2 0 0 0 0 1 0 1 2 2 0 2 11
Tabuadas de adi¸c˜ao e multiplica¸c˜ao para octal:
+8 0 1 2 3 4 5 6 7 0 0 1 2 3 4 5 6 7 1 1 2 3 4 5 6 7 10 2 2 3 4 5 6 7 10 11 3 3 4 5 6 7 10 11 12 4 4 5 6 7 10 11 12 13 5 5 6 7 10 11 12 13 14 6 6 7 10 11 12 13 14 15 7 7 10 11 12 13 14 15 16 ×8 0 1 2 3 4 5 6 7 0 0 0 0 0 0 0 0 0 1 0 1 2 3 4 5 6 7 2 0 2 4 6 10 12 14 16 3 0 3 6 11 14 17 22 25 4 0 4 10 14 20 24 30 34 5 0 5 12 17 . . . . 6 0 6 . . . . 7 0 7 . . . 61
Exerc´ıcio 2.1.9 Complete a tabuada de multiplica¸c˜ao base 8 e determine as tabelas para a base hexadecimal.
Assim, por exemplo, 1021(3) × 211(3) = 1000201(3), ou seja, 34(10) × 22(10) = 748(10),
porque: 1 0 2 1(3) × 2 1 1(3) 1 0 2 1 1 0 2 1 + 2 1 1 2 1 0 0 0 2 0 1(3) 3 4(10) × 2 2(10) 6 8 + 6 8 7 4 8(10) `
A esquerda, todos os valores interm´edios est˜ao representados na base 3 e `a direita na base 10 (visando recordar o algoritmo da multiplica¸c˜ao e estabelecer a compara¸c˜ao).
2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 15
Exerc´ıcio 2.1.10 Calcule:
(i) 1110010(2) + 111001111(2) em bin´ario. (ii) 1F 5(h)+ 111001111(2) em hexadecimal. (iii) 1330(4)+ 123(4) em octal.
(iv) 1F 5(h)+ ABCD(h)+ 1F B(h) em hexadecimal. (v) ABCD(h)− 1F B(h) em hexadecimal.
(vi) 73542(o)× 27(10) em octal.
(vii) 73542(o)/27(10) em octal. (viii) 111000010(2)/111(2) em bin´ario.
2.1.3 Representa¸c˜ao de n´umeros com um n´umero fixo de d´ıgitos
Num computador cada inteiro ´e representado por um n´umero fixo de bits. Em 8 bits, 13 seria representado por 00001101. Isto ´e, introduzem-se 0’s `a esquerda sempre que o n´umero de bits da representa¸c˜ao do inteiro seja menor que o n´umero de bits que se fixou.
Se n representar o n´umero de bits que se fixou para a representa¸c˜ao, os bits s˜ao numerados da esquerda para a direita por bitn−1, bitn−2, . . . , bit1 e bit0. O bitn−1 diz-se o bit mais
significativo e bit0 ´e o menos significativo.
Quando se fixa o n´umero de bits da representa¸c˜ao, limita-se tamb´em os valores que podem ser representados. Se, por exemplo, o n´umero de bits for 8 ent˜ao o maior inteiro positivo que se pode representar ´e:
1 1 1 1 1 1 1 1
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
cujo valor ´e
27× 1 + 26× 1 + 25× 1 + 24× 1 + 23× 1 + 22× 1 + 21× 1 + 20× 1 = 255 = 28− 1 Em geral, com n bits podemos representar n´umeros inteiros positivos de 0 a 2n− 1.
Proposi¸c˜ao 3 O maior inteiro positivo que se consegue representar na base b com n d´ıgitos ´e bn− 1.
2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 16
Prova: Suponhamos que A ´e representado com n d´ıgitos na base b por an−1an−2. . . a1a0
com ai ∈ {0, . . . , b − 1}. Ent˜ao, A = an−1bn−1+ an−2bn−2. . . a1b1+ a0b0= n−1 X i=0 aibi Ora, n−1 X i=0 aibi ≤ n−1 X i=0 (b− 1)bi = (b− 1) n−1 X i=0 bi = (b− 1)b 0− b × bn−1
1− b (soma de termos de progress˜ao geom´etrica) = (b− 1)1− b n 1− b = bn− 1 u t Observa¸c˜ao: Pn−1i=0 ui ´e uma nota¸c˜ao abreviada para u0+ u1+· · · + un−1, podendo-se ler
“somat´orio para i desde 0 at´e n− 1 de ui”.
Exerc´ıcio 2.1.11 Qual ´e o n´umero m´ınimo de bits necess´ario para representar 1125? Qual o valor m´aximo que pode ser representado com esse n´umero de bits?
Normalmente o n´umero de bits usados s˜ao 8, 16, 32 ou 64. Com 8 bits podemos representar inteiros entre 0 e 255, com 16 bits entre 0 e 65535, com 32 bits entre 0 a 4294967295, etc. 2.1.4 Representa¸c˜ao de n´umeros negativos
Para representar n´umeros inteiros positivos e negativos numa base b e com um n´umero fixo de d´ıgitos ´e necess´ario codificar o sinal e encontrar um processo eficiente de determinar se um n´umero ´e positivo ou negativo. Normalmente ´e reservado um d´ıgito para indicar o sinal. Por exemplo, em n d´ıgitos, sendo A = an−1an−2. . . a1a0(b), se an−1 = 0 ent˜ao A ´e positivo,
se an−1 = b− 1 o n´umero ´e negativo.
Vamos considerar trˆes formas introduzidas para representar n´umeros inteiros positivos e negativos e que obedecem `a condi¸c˜ao de sinal apresentada. Vamos supor que a base ´e 2 e que o n´umero de d´ıgitos ´e n, embora os resultados possam ser generalizados para qualquer base b.
2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 17
Representa¸c˜ao com bit de sinal. Reserva-se o bit mais `a esquerda para o sinal e os restantes para o m´odulo do n´umero.
n bits
z }| {
n−1 n−2 . . . 0
sinal m´odulo
O bit de sinal ´e 0 para os positivos e ´e 1 para os negativos. Assim, um n´umero positivo ´e da forma A = 0an−2. . . a1a0 e um negativo ´e da forma A = 1an−2. . . a1a0. Com n bits
podemos representar n´umeros positivos de 0 a 2n−1− 1 e negativos −(2n−1− 1) a 0.
As representa¸c˜oes de dois n´umeros com o mesmo m´odulo diferem apenas no bit de sinal. Se n = 3 temos o quadro seguinte:
Valor 0 1 2 3 −0 −1 −2 −3
Representa¸c˜ao com bit de sinal 000 001 010 011 100 101 110 111 Podemos observar que zero tem duas representa¸c˜oes: +0 e−0. Para efectuar adi¸c˜oes de n´umeros com sinais diferentes ´e necess´ario primeiro determinar qual ´e o maior e qual o sinal do resultado. O mesmo problema surge para a subtrac¸c˜ao, a qual pode ser tratada como a adi¸c˜ao associando o sinal negativo ao subtraendo, x− y = x + (−y).
Representa¸c˜ao em Complemento para 1. A utiliza¸c˜ao desta representa¸c˜ao para inteiros apresenta o mesmo problema da anterior, isto ´e, zero ter´a duas representa¸c˜oes +0 e−0. Para uma representa¸c˜ao em n bits, chama-se complemento para 1 de A ao valor (2n− 1) − A.
O bit mais signficativo d´a indica¸c˜ao sobre o sinal do n´umero (se for 1, o n´umero ´e negativo). O n´umero negativo −x ser´a representado por (2n− 1) − x. Por exemplo, para n = 3, temos
o quadro seguinte:
Valor +0 +1 +2 +3 −3 −2 −1 −0
Complemento para 1 000 001 010 011 100 101 110 111
Estas representa¸c˜oes podem ser obtidas por troca de 1’s por 0’s e 0’s por 1’s na repre-senta¸c˜ao de x em n bits, o que resulta de 2n− 1 ser representado por n 1’s. Por exemplo, -14 ´e representado em complemento para 1 em 8 bits por:
1 1 1 1 1 1 1 1 − 0 0 0 0 1 1 1 0 1 1 1 1 0 0 0 1
2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 18
Representa¸c˜ao em Complemento para 2. Neste caso, zero ter´a uma s´o representa¸c˜ao: Exactamente metade dos n´umeros representados s˜ao n˜ao negativos e a outra metade n´umeros negativos.
De 0 a 2n−1−1 encontram-se os n´umeros n˜ao negativos e de 2n−1a 2n−1 n´umeros
negativos.
Para os positivos a representa¸c˜ao coincide com a representa¸c˜ao anterior. Os n´umeros nega-tivos s˜ao complementos para a base. Por defini¸c˜ao, o complemento para 2 de A numa representa¸c˜ao de n bits ´e o inteiro 2n− A.
Exemplo 7 Para n = 3 ent˜ao -1 ´e representado por 111 pois 23 − 1 = 7. Se n = 8, o inteiro -1 ´e representado por 11111111 em complemento para 2. Nnuma representa¸c˜ao em 8 bits usando complemento para 2 o inteiro −3 ´e o bin´ario correspondente a 28 − 3, ou seja
253 = 11111101.
Em resumo, temos o quadro seguinte para n = 3:
Valor 0 +1 +2 +3 −4 −3 −2 −1
Complemento para 2 000 001 010 011 100 101 110 111
Usando a defini¸c˜ao de complemento para 2, pode-se concluir que 2n−1 representa −2n−1
pois 2n− 2n−1 = 2n−1. Por outro lado, 2n− 1 representa −1.
Proposi¸c˜ao 4 No sistema de representa¸c˜ao com n bits e complemento para 2 os valores poss´ıveis dos inteiros represent´aveis variam de −2n−1 a 2n−1− 1. De 0 a 2n−1 − 1 tem-se
n´umeros n˜ao negativos e de 2n−1 a 2n− 1 n´umeros negativos.
Para al´em de s´o haver um zero, neste caso todos os negativos tˆem 1 como bit mais significativo, o qual funciona assim como bit de sinal. As adi¸c˜oes podem ser efectuadas sem analisar o sinal dos operandos e nas subtrac¸c˜oes basta calcular o complemento para 2 do subtraendo e adicionar o valor resultante ao subtractivo, como se ver´a adiante.
Para determinar representa¸c˜ao em complemento para 2 dum n´umero ´e ´util observar a sua rela¸c˜ao com a representa¸c˜ao em complemento para 1.
Como 2n− A = (2n− 1 − A) + 1 e 2n− 1 − A ´e a representa¸c˜ao em complemento para 1,
podemos obter a representa¸c˜ao em complemento para 2 complementando todos os d´ıgitos de A (isto ´e trocando os uns com os zeros e os zeros com os uns) e adicionando depois uma unidade.
2.2. ADIC¸ ˜AO E SUBTRACC¸ ˜AO EM N BITS 19
Exemplo 8 Para determinar a representa¸c˜ao de -17 em complemento para 2 em 8 bits, toma-se 00010001, troca-se 0’s por 1’s, obtendo 11101110, e soma-se 1, resultando 11101111. Inversamente, se se pretender determinar o valor (em decimal) do inteiro que ´e dado em complemento para 2 por A = an−1an−2. . . a1a0, basta considerar que a parcela an−12n−1 ´e
negativa. Por exemplo,
110(2) = 1× (−22) + 1× 21+ 0× 20 =−4 + 2 + 0 = −2(10)
Exerc´ıcio 2.1.12 Represente em complemento para 2 e com 8 bits os n´umeros inteiros se-guintes:
(i) 25, -25, 41, 56, 19, -31, -87;
(ii) a soma dos anteriores e verifique se o resultado de somar as representa¸c˜oes est´a correcto. Exerc´ıcio 2.1.13 Suponha que a representa¸c˜ao em complemento para dois com 4 d´ıgitos de um inteiro ´e 1101. Como ´e a representa¸c˜ao com:
(i) 6 d´ıgitos (ii) 8 d´ıgitos
(iii) n d´ıgitos, com n≥ 4.
Exerc´ıcio 2.1.14 Suponha agora que, em 4 d´ıgitos, a representa¸c˜ao em complemento para dois ´e 0101. Como responderia `as al´ıneas anteriores? Em geral, dado um inteiro x represen-tado em n d´ıgitos como procederia para obter a sua representa¸c˜ao com mais d´ıgitos?
2.2
Adi¸
c˜
ao e Subtrac¸
c˜
ao em n Bits
2.2.1 Adi¸c˜ao e subtrac¸c˜ao bin´aria de inteiros n˜ao negativos
• Adi¸c˜ao: Segue o algoritmo habitual de adi¸c˜ao bin´aria; se se tiver uma representa¸c˜ao de m bits e a soma for superior a 2m− 1 (o maior inteiro positivo com m bits) diz-se que
h´a transporte (carry); Por exemplo: a soma em 8-bits dos inteiros positivos 10010000 e 11111101 ´e 10001101, o que est´a errado (tem transporte 1).
• Subtrac¸c˜ao: Segue algoritmo habitual de subtrac¸c˜ao bin´aria; se o valor da diferen¸ca for inferior a zero, diz-se que h´a transporte (borrow); Por exemplo: a diferen¸ca em 8-bits 10010000− 11111101 = 10010011 o que est´a errado (tem transporte 1).
2.2. ADIC¸ ˜AO E SUBTRACC¸ ˜AO EM N BITS 20
2.2.2 Adi¸c˜ao de inteiros em complemento para 2
Se os inteiros s˜ao n˜ao negativos, a soma ´e calculada pelo algoritmo habitual. Se a repre-senta¸c˜ao tiver m bits e a soma for superior a 2m−1− 1 (o maior inteiro positivo com m bits num sistema de complemento para 2) diz-se que h´a overflow, sendo indica¸c˜ao de que o valor obtido est´a errado.
Por exemplo: a soma em 8-bits e complemento para 2 de 01111111 com 00000001 ´e 10000000 ou seja, a soma de +127 com +1 ´e−128(!). Neste caso, h´a overflow.
Se os inteiros s˜ao ambos negativos (em complemento para 2) a soma ´e calculada pelo algoritmo habitual ”desprezando-se”o transporte. Se se usa uma representa¸c˜ao em m bits, o ”desprezar”o transporte corresponde a subtrair ao resultado obtido 2m. Basta notar que quando se efectua (−x) + (−y) se pretende obter o complemento para 2 de x + y, isto ´e 2m− (x + y). A rela¸c˜ao desse n´umero com os complementos para 2 de x e y ´e 2m− (x + y) =
(2m− x) + (2m− y) − 2m. Ou seja, para obter a representa¸c˜ao em complemento para 2 de
(−x) + (−y) adicionam-se as representa¸c˜oes de (−x) e (−y) e subtrai-se 2m.
Se a representa¸c˜ao tiver m bits e a soma for inferior a −2m−1 (o menor inteiro negativo
com m bits num sistema de complemento para 2) diz-se que h´a underflow, sendo indica¸c˜ao de que o valor obtido est´a errado.
Por exemplo: a soma em 8-bits e complemento para 2 de 10000000 com 11111111 seria 01111111 ou seja,−128 + (−1) = +127 (!). Neste caso, h´a underflow.
Analogamente, a soma dum inteiro positivo com um inteiro negativo ´e o bin´ario correspon-dente `a adi¸c˜ao das representa¸c˜oes dos operandos, ”desprezando-se”o transporte se o houver. N˜ao haver´a overflow nem underflow.
2.2.3 Subtrac¸c˜ao de inteiros em complemento para 2
A subtrac¸c˜ao bin´aria de inteiros representados em complemento para 2 pode-se reduzir `a adi¸c˜ao de inteiros. Exemplos (-x)-(-y) = (-x)+y 10010000-11111101=10010000+00000011=10010011 (-x)-y=(-x)+(-y) 10010000-00000011=10010000+11111101=10001101 y-(-x)=y+x 00000011-10010000=00000011+ 01110000=01110011 y-x=y+(-x) 00000011-00010000=00000011+11110000=11110011
Exerc´ıcio 2.2.1 Quais das seguintes somas est˜ao correctas (se truncadas a 8 bits) caso as representa¸c˜oes indicadas sejam representa¸c˜oes em complemento para 2 e caso sejam repre-senta¸c˜oes s´o para inteiros n˜ao negativos?
2.3. REPRESENTAC¸ ˜AO EM V´IRGULA FIXA 21
negativos negativo e positivo positivos
10010000 + 11111101 1 10001101 00010000 + 11111111 1 00001111 00010000 + 00111101 0 01001101 positivos negativos 01111010 + 01110001 0 11101011 < 0 10000110 + 10001111 1 00010101 > 0 overflow underflow
2.3
Representa¸
c˜
ao em V´ırgula Fixa
A representa¸c˜ao posicional de inteiros pode ser generalizada para representar n´umeros racio-nais considerando-se potˆencias negativas da base. Por exemplo, na base 10:
344.45 = 3× 102+ 4× 101+ 4× 100+ 4× 10−1+ 5× 10−2 Podemos ainda escrever:
344.45 = 34445.× 10−2 = (3× 104+ 4× 103+ 4× 102+ 4× 101+ 5× 100)× 10−2 Se se fixar a posi¸c˜ao da v´ırgula (neste caso o factor ´e 10−2), o n´umero pode ser tratado como um inteiro. Assim as opera¸c˜oes com n´umeros racionais podem ser feitas internamente como opera¸c˜oes com inteiros, desde que os factores de ajuste sejam guardados para que o resultado final seja correctamente calculado.
Note-se em particular que as representa¸c˜oes de inteiros em computadores estudadas anteri-ormente s˜ao representa¸c˜oes em v´ırgula fixa, com a v´ırgula `a direita do bit menos significativo. No caso geral, os ajustes da posi¸c˜ao da v´ırgula e o seu armazenamento ficar˜ao a cargo do programador.
Contudo, actualmente, a representa¸c˜ao em computadores dos n´umeros racionais ´e feita, geralmente, em v´ırgula flutuante.
2.4
Representa¸
c˜
ao em V´ırgula Flutuante
A representa¸c˜ao dum n´umero racional em v´ırgula flutuante, contrariamente `a representa¸c˜ao em v´ırgula fixa, ´e feita atrav´es de um par de inteiros que representam respectivamente a mantissa m e o expoente e de forma que para uma determinada base b, o seu valor ´e:
2.4. REPRESENTAC¸ ˜AO EM V´IRGULA FLUTUANTE 22
F = m× be Por exemplo, 673× 1014.
A designa¸c˜ao v´ırgula flutuante resulta do facto de que a posi¸c˜ao da v´ırgula depender do expoente e portanto n˜ao ser fixada previamente.
A nota¸c˜ao mais usada para v´ırgula flutuante ´e a do IEEE (Institute of Electrical and Electronics Engineers). A base ´e a bin´aria. Em precis˜ao simples cada n´umero ´e representado com 32 bits:
S E (8 bits) M (23 bits)
O sinal da mantissa ´e representado pelo bit S, que por quest˜oes de eficiˆencia ´e separado da representa¸c˜ao do m´odulo da mantissa o qual ´e constitu´ıdo pelos 23 bits mais `a direita. O valor do m´odulo da mantissa ´e normalmente dado por 1.M(2), isto ´e, 1 mais o valor de M considerado como n´umero racional bin´ario, com a v´ırgula `a esquerda do bit mais significativo. Os oito bits restantes s˜ao interpretados como um inteiro positivo E e representam o expoente cujo valor ´e E− 127. O valor representado ´e
F = (−1)S(2E−127)(1.M )(2) excepto se E for 0000000 ent˜ao F = (−1)S(2−127)(.M
(2)) e se M tamb´em ´e zero ent˜ao F = 0.
A sequˆencia 1 10000111 10100000000000000000000 representaria um n´umero negativo, dado que S = 1. Como 10000111(2) = 135(10), o expoente ´e 135− 127 = 8; e o m´odulo da mantissa ´e
1 + 0.101(2) = 1 + 1× 2−1+ 1× 2−3 = 1 + (5/8) = 1 + 0.625 = 1.625 O valor representado ´e−28× 1.625 = −416.
Existem outras representa¸c˜oes em v´ırgula flutuante IEEE, como a precis˜ao dupla em que s˜ao usados 64 bits e a qu´adrupla em que s˜ao usados 128 bits.
Exerc´ıcio 2.4.1 Determine qual o maior n´umero que ´e represent´avel em precis˜ao simples, segunda a norma do IEEE.
Exerc´ıcio 2.4.2 Indique o valor das seguintes representa¸c˜oes em precis˜ao simples segunda a norma do IEEE:
(i) 0 01110101 01010100000000000000000000 (ii) 1 00101010 11100000000000000000000000
Exerc´ıcio 2.4.3 Exprima o mais exactamente poss´ıvel os seguintes n´umeros em precis˜ao simples IEEE: 2.5, .0005, 2−40 e 256
Cap´ıtulo 3
Algumas No¸
c˜
oes de Divisibilidade
Por defini¸c˜ao, um inteiro a ´e divis´ıvel por um inteiro b se e s´o se a = bq para algum inteiro q. Nesse caso, escreve-se b | a, lendo-se b divide a. Tamb´em se diz que b ´e divisor de a e que a ´e m´ultiplo de b. O inteiro q ´e o quociente da divis˜ao inteira de a por b. Atendendo `a defini¸c˜ao de divisor, se a = bq ent˜ao tanto b como q s˜ao divisores de a. Por exemplo, os divisores positivos de 30 s˜ao 1, 2, 3, 5, 6, 10, 15 e 30, encontrando-se emparelhados.
1 2 3 10 15 30 5 6
Na procura de divisores de a, para a positivo, n˜ao ´e necess´ario ultrapassar √a, pois qualquer divisor que seja superior a √a ter´a que emparelhar com algum divisor que ´e inferior a √a.
3.1
Bases de Numera¸
c˜
ao e Crit´
erios de Divisibilidade
´
E conhecido que, um inteiro positivo representado na base 10 ´e divis´ıvel por 100 se e s´o se a sua representa¸c˜ao terminar por 00 (pois os restos da divis˜ao por 10 e 102 s˜ao 0). ´E divis´ıvel
por 1000 sse tal representa¸c˜ao terminar em 000. De modo an´alogo se pode concluir que um inteiro (positivo) representado na base 2 ´e divis´ıvel por 4 (isto ´e, por 22) se a sua representa¸c˜ao
em bin´ario terminar por 00 e ´e divis´ıvel por 8 (isto ´e, por 23) sse terminar em 000.
Proposi¸c˜ao 5 Um inteiro (positivo) x representado numa certa base b ´e divis´ıvel por bk,
3.1. BASES DE NUMERAC¸ ˜AO E CRIT´ERIOS DE DIVISIBILIDADE 24
Ideia da prova: Para que x seja divis´ıvel por bk ent˜ao ter´a que ser divis´ıvel tamb´em por b1, b2, . . . , bk−1, o que quer dizer que se efectuar k divis˜oes sucessivas por b ter´a k restos 0. Ou seja, x = b(x/b) + 0. Depois, k > 1, tamb´em (x/b) = b((x/b)/b) + 0, . . . ut Analisando a defini¸c˜ao de representa¸c˜ao base 10, podemos justificar o seguinte crit´erio de divisibilidade por 9.
Proposi¸c˜ao 6 Um inteiro ´e divis´ıvel por 9 sse a soma dos d´ıgitos da sua representa¸c˜ao na base 10 for divis´ıvel por 9.
Prova: Seja x um inteiro (positivo) qualquer e suponhamos que a sua representa¸c˜ao base 10 ´e anan−1. . . a1a0. Isto quer dizer que,
x = an× 10n+ an−1× 10n−1+· · · + a1× 10 + a0
Como
10 = 9 + 1 um m´ultiplo de 9 mais uma unidade
100 = 99 + 1 um m´ultiplo de 9 mais uma unidade
1000 = 999 + 1 um m´ultiplo de 9 mais uma unidade
.. .
10n= 99 . . . 9
| {z }
9 repetido n vezes
+1 um m´ultiplo de 9 mais uma unidade
ent˜ao x = ( ˙9 + 1)× an+ ( ˙9 + 1)× an−1+· · · + (˙9 + 1) × a1+ a0, ou seja
x = ˙9 + (an+ an−1+· · · + a1+ a0)
em que ˙9 ´e abreviatura de “um m´ultiplo de 9” (nesta igualdade, cada ocorrˆencia de ˙9 designa um m´ultiplo diferente). Na “simplifica¸c˜ao” da igualdade, us´amos tamb´em o facto da soma de m´ultiplos de 9 ser um m´ultiplo de 9 e do produto dum n´umero qualquer por um m´ultiplo de 9 ser um m´ultiplo de 9. Observando que x = ˙9 + (an+ an−1+· · · + a1+ a0), concluimos
que x ´e m´ultiplo de ˙9 se e s´o se an+ an−1+· · · + a1+ a0 for m´ultiplo de ˙9. ut
O exerc´ıcio seguinte pode ser resolvido por aplica¸c˜ao dum racioc´ınio an´alogo, agora obser-vando que 10 = ˙11−1, 100 = ˙11+1, 1000 = ˙11−1, 1000 = 1000×10 = ( ˙11−1)( ˙11−1) = ˙11+1, 10000 = ( ˙11 + 1)× 10 = ˙11− 1, . . .
Exerc´ıcio 3.1.1 Mostre que um inteiro ´e divis´ıvel por 11 sse a soma dos d´ıgitos de ordem par da sua representa¸c˜ao na base 10 for igual `a soma dos d´ıgitos de ordem ´ımpar.
3.2. NOC¸ ˜AO DE DIVISOR E DE M ´ULTIPLO 25
Exerc´ıcio 3.1.2 Mostre que um inteiro
(i) ´e divis´ıvel por 5 sse a sua representa¸c˜ao decimal terminar em 0 ou 5;
(ii) ´e divis´ıvel por 3 sse a soma dos d´ıgitos da sua representa¸c˜ao decimal for divis´ıvel por 3. (iii) ´e divis´ıvel por 2 sse o d´ıgito menos significativo da sua representa¸c˜ao decimal for par.
3.2
No¸
c˜
ao de Divisor e de M´
ultiplo
O conjunto1 dos divisores dum inteiro a ´e constitu´ıdo por todos os inteiros positivos tais que se b| a e os seus sim´etricos.
{divisores de a} = {b : b ∈ Z e b divide a}
Frequentemente, o termo divisor ´e usado para referir divisor positivo.
O conjunto dos m´ultiplos de b ´e constitu´ıdo pelos inteiros da forma bz para z inteiro, ou seja
{m´ultiplos de b} = {bz : z ∈ Z}.
Para mostrar formalmente o resultado seguinte basta usar a defini¸c˜ao de m´ultiplo e de divisor que acab´amos de apresentar. Este resultado foi utilizado na sec¸c˜ao anterior, devendo ser bem conhecido.
Proposi¸c˜ao 7 A soma, a diferen¸ca e o produto de dois m´ultiplos de b ´e um m´ultiplo de b. O produto dum m´ultiplo de b por qualquer inteiro ´e um m´ultiplo de b.
Prova: Sejam m1 e m2 m´ultiplos de b. Ent˜ao existem inteiros z1 e z2 tais que m1= bz1
e m2 = bz2. Logo, m1+ m2 = bz1+ bz2 = b(z1+ z2) e como a soma de inteiros ´e um inteiro,
conclui-se que z1+z2 ∈ Z, pelo que m1+m2´e da forma bz, para algum z∈ Z (concretamente,
para z = z1+ z2). Portanto, a soma de m´ultiplos de b ´e m´ultiplo de b.
Para mostrar que a diferen¸ca de dois m´ultiplos de b (isto ´e, m1− m2) ´e m´ultiplo de b
procede-se analogamente.
Para mostrar que m1m2 ´e m´ultiplo de b, isto ´e, que o produto de dois m´ultiplos de b ´e
m´ultiplo de b, observe-se que m1m2= (bz1)(bz2) = b(bz1z2) e como bz1z2∈ Z, conclui-se que
m1m2 ´e produto de b por um inteiro, ou seja, ´e m´ultiplo de b.
Do mesmo modo, para concluir que o produto dum m´ultiplo de b (por exemplo, m1) por
um qualquer inteiro x ´e m´ultiplo de b, basta notar que m1x = (bz1)x = b(z1x) e z1x∈ Z. ut
1´
E usual representar “o conjunto dos x’s tais que x satisfaz condi¸c˜ao. . . ” por {x | x satisfaz condi¸c˜ao . . . }. Neste cap´ıtulo, usaremos a nota¸c˜ao alternativa {x : x satisfaz condi¸c˜ao . . . }, para evitar usar | com duplo significado, reservando | para “divide”.
3.3. FACTORIZAC¸ ˜AO EM PRIMOS 26
Exerc´ıcio 3.2.1 Mostrar que quaisquer que sejam x, y e z inteiros, se x dividir y e dividir y + z ent˜ao tamb´em divide z.
3.3
Factoriza¸
c˜
ao em Primos
Um n´umero p ´e primo se e s´o se tem exactamente quatro divisores (inteiros), nomeadamente, p,−p, 1 e −1. Assim, um n´umero ´e primo se e s´o se tem exactamente dois divisores positivos. Proposi¸c˜ao 8 Qualquer inteiro maior do que 1 ´e ou primo ou produto de primos.
Prova: Pela defini¸c˜ao de primo, tem-se 2 ´e primo.
Seja x∈ N tal que x > 2. Suponhamos que j´a mostr´amos que todo y ∈ N tal que 2 ≤ y < x ´e ou primo ou produto de primos. Vamos mostrar que ent˜ao tamb´em podemos concluir que x ´e primo ou produto de primos. De facto, se x n˜ao for primo, existem x1, x2 ∈ N \ {0, 1}
tais que x = x1x2. Como 2≤ x1< x e 2≤ x2 < x, sabemos j´a que x1 ´e primo ou produto de
primos e x2 ´e primo ou produto de primos.
Analisando os quatro casos (a) x1 e x2 primos, (b) x1 e x2 produtos de primos, (c) x1
primo e x2 produto de primos, e (d) x1 produto de primos e x2 primo, concluimos que se
x = x1x2 ent˜ao x pode escrever-se como produto de primos. Logo, se x n˜ao ´e primo ent˜ao x
´e um produto de primos, ou seja, x ´e primo ou produto de primos. ut
A t´ecnica utilizada na prova anterior designa-se por indu¸c˜ao matem´atica. Como hip´otese de indu¸c˜ao supusemos que j´a se tinha mostrado que todo y∈ N tal que 2 ≤ y < x ou ´e primo ou ´e produto de primos. Como x est´a fixo (e ´e finito), essa prova pode ser realmente reconstru´ıda. Por exemplo, se x fosse 24, estariamos a assumir que j´a tinhamos verificado que 2, 3, 5, 7, 11, 13, 17, 19 e 23 s˜ao primos e que 4 = 2× 2, 6 = 2 × 3, 8 = 2 × 2 × 2, 9 = 3 × 3, 10 = 2× 5, 12 = 2 × 2 × 3, 14 = 2 × 7, 15 = 3 × 5, 16 = 2 × 2 × 2 × 2, 18 = 2 × 3 × 3, 20 = 2× 2 × 5, 21 = 3 × 7 e 22 = 2 × 11. Como 24 n˜ao ´e primo porque, por exemplo, 24 = 4× 6, ent˜ao podemos concluir que ´e produto de primos, por substitui¸c˜ao de 4 e 6 (que correspondem a x1 e x2) pelas suas factoriza¸c˜oes em primos: 24 = (2× 2) × (2 × 3).
Usualmente, escreve-se 24 = 23 × 3, sendo esta a factoriza¸c˜ao de 24 primos. Em geral,
para qualquer n´umero natural n n˜ao inferior a 2, existem primos p1, . . . pk ´unicos e tal que n
se pode factorizar de forma ´unica como pα1
1 × · · · × p αk
k sendo αi6= 0 e pi< pj se i < j, para
3.3. FACTORIZAC¸ ˜AO EM PRIMOS 27
Corol´ario 8.1 Seja x um inteiro tal que x ≥ 2 e x n˜ao ´e primo. A factoriza¸c˜ao de x em primos ´e ´unica, a menos de reordena¸c˜ao dos factores.
Ideia da prova: An´aloga `a anterior, supondo como hip´otese j´a se provou que todo y∈ N tal que 2 ≤ y < x ou ´e primo ou se escreve de forma ´unica como produto de primos (a
menos de reordena¸c˜ao de factores). ut
Corol´ario 8.2 Qualquer inteiro maior do que 1 que n˜ao ´e primo ´e divis´ıvel por algum primo. Prova: Seja x um inteiro qualquer maior do que 1. Se x n˜ao ´e primo ent˜ao x ´e produto
de primos. Consequentemente, algum primo ´e seu divisor. ut
Proposi¸c˜ao 9 O conjunto dos inteiros n˜ao negativos que s˜ao primos ´e infinito.
Prova: Suponhamos que s´o existiam n primos, sendo n um certo inteiro fixo. Ou seja, suponhamos que o conjunto dos primos era finito e que tinha exactamente n elementos, os quais vamos denotar por p1, p2, . . . , pn. Ent˜ao, o inteiro positivo
1 +
n
Y
i=1
pi
n˜ao seria primo, j´a que ´e maior do que qualquer um dos primos p1, p2, . . . , pn.
Mas se 1 + p1p2. . . pn n˜ao ´e primo, ent˜ao algum dos primos o divide (ou seja, ´e m´ultiplo
de algum dos primos). Suponhamos que pk divide 1 + p1p2· · · pn, sendo k um inteiro fixo,
1≤ k ≤ n. Como pk divideQni=1piisto ´e, pkdivide o produto 1+p1p2· · · pn, pode-se concluir
que se pk dividir 1 + p1p2· · · pn ent˜ao pk divide 1. Mas nenhum primo divide 1. O absurdo
resultou de se ter suposto que o conjunto dos primos era finito. Logo, o conjunto dos primos
´e infinito. ut
3.3.1 Determina¸c˜ao de primos: crivo de Erast´otenes
Descreve-se a seguir um algoritmo para determina¸c˜ao de todos os primos n˜ao superiores a um n´umero n dado. Tal algoritmo ´e conhecido como m´etodo do crivo. Parte-se duma tabela contendo todos os n´umeros n˜ao superiores n. O algoritmo resume-se a seleccionar o menor inteiro na tabela (ainda n˜ao seleccionado) e apagar todos os seus m´ultiplos at´e todos os valores estarem ou seleccionados ou apagados.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 2 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49
3.4. M ´AXIMO DIVISOR COMUM 28 2 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 2 3 5 7 11 13 17 19 23 25 29 31 35 37 41 43 47 49 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 49 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
O processo continua . . . Os valores que ficarem na tabela s˜ao os primos, neste caso, n˜ao superiores a 50 (o valor de n neste exemplo).
3.3.2 C´alculo de divisores por an´alise da factoriza¸c˜ao em primos
A partir da factoriza¸c˜ao dum n´umero em primos ´e poss´ıvel determinar todos os seus divisores. Por exemplo, os divisores de 30, que ´e dado por
30 = 21× 31× 51 s˜ao: 20× 30× 50 = 1 21× 30× 50 = 2 20× 31× 50 = 3 20× 30× 51 = 5 21× 31× 50 = 6 21× 30× 51 = 10 20× 31× 51 = 15 21× 31× 51 = 30 Em geral, se pα1 1 · · · p αk
k for a decomposi¸c˜ao de x em primos ent˜ao o conjunto dos divisores
positivos de x ´e
{pβ1
1 · · · p βk
k : 0≤ βi ≤ αi para i = 1, . . . , k}
concluindo-se que o n´umero de divisores de pα1
1 · · · p αk
k ´e
Qk
i=1(αi+ 1).
3.4
M´
aximo Divisor Comum
Sabemos que 1 ´e divisor de qualquer inteiro e que o maior divisor de qualquer inteiro positivo x ´e o pr´oprio x. Dados inteiros positivos a e b, podemos falar do seu m´aximo divisor comum, o qual representamos por mdc(a, b). O m´aximo divisor comum ´e o maior dos divisores comuns:
3.4. M ´AXIMO DIVISOR COMUM 29
d ´e mdc(a, b) sse d| a, d | b e d0| d qualquer que seja d0 tal que d0| a e d0| b. Por defini¸c˜ao de
mdc(a, b), cada divisor comum de a e b ´e divisor de mdc(a, b).
Por exemplo, por an´alise da decomposi¸c˜ao de 30 e 500 em primos, 30 = 2 × 3 × 5 e 500 = 22× 53, podemos concluir que mdc(30, 500) = 10.
Dois inteiros a e b chamam-se primos entre si se e s´o se mdc(a, b) = 1. Proposi¸c˜ao 10 Os inteiros a/mdc(a, b) e b/mdc(a, b) s˜ao primos entre si.
Prova: Queremos mostrar que mdc(mdc(a,b)a ,mdc(a,b)b ) = 1. Para isso vamos provar que se mdc( a
mdc(a,b), b
mdc(a,b)) = d ent˜ao mdc(a, b)d tamb´em divide a e b. Podemos depois concluir
que necessariamente d = 1 pois se d fosse maior do que 1 ent˜ao mdc(a, b)d > mdc(a, b), mdc(a, b)d seria um divisor comum a a e b, maior do que o m´aximo divisor comum, o que, por defini¸c˜ao de mdc(a, b) ´e imposs´ıvel. Para completar os detalhes da prova, resta mostrar que mdc(a, b)d ´e divisor de a e de b se d|mdc(a,b)a e d| mdc(a,b)b . De facto, basta notar que:
a = mdc(a, b) a mdc(a, b) = mdc(a, b)d a mdc(a, b)d e b = mdc(a, b) b mdc(a, b) = mdc(a, b)d b mdc(a, b)d. u t Tem-se mdc(320×57×1127×312, 24×36×525) = 36×57, porque o m´aximo divisor comum
´e dado por
2min(0,4)× 3min(20,6)× 5min(7,25)× 11min(27,0)× 31min(2,0)
ou seja, por 203657110310. Este m´etodo pode ser sempre aplicado se forem conhecidas as factoriza¸c˜oes dos n´umeros a e b. Quando n˜ao se conhecem, o algoritmo de Euclides permite calcular mdc(a, b) eficientemente.
3.4.1 C´alculo do m´aximo divisor comum pelo algoritmo de Euclides
A correc¸c˜ao do algoritmo de Euclides para c´alculo do mdc(a, b) decorre do seguinte resultado. Lema 1 Sejam a e b inteiros positivos tais que a < b e seja r o resto da divis˜ao de a por b. Ent˜ao, mdc(a, b) = mdc(b, r).
Prova: Represente-se por d o m´aximo divisor comum de a e b. Por defini¸c˜ao de divis˜ao inteira, r ´e o resto da divis˜ao de a por b sse 0 ≤ r < b e a = bq + r para algum q ∈ Z. Por outro lado, por defini¸c˜ao de m´aximo divisor comum, d|a e d|b. Portanto, d|(a − bq). Ou seja,
3.4. M ´AXIMO DIVISOR COMUM 30
d|r. Logo, d ´e um divisor comum de b e r. Seja d0 um outro divisor comum de b e de r.
Resta-nos mostrar que d0 ter´a que dividir d para poder concluir que d ´e mdc(b, r). Para isso,
basta notar que se d0|b e d0|r ent˜ao d0|(bq + r) e portanto d0|a. Logo, d0 ´e um divisor comum
a a e b, e portanto d0|mdc(a, b), isto ´e, d0|d. ut
Algoritmo de Euclides para determina¸c˜ao de mdc(a, b). Sendo a e b inteiros positivos, podemos definir mdc(a, b) recursivamente por
mdc(a, 0) = a se a > 0
mdc(a, b) = mdc(b, a%b) se a > b > 0 mdc(a, b) = mdc(b, a) se a < b em que a%b denota o resto da divis˜ao de a por b.
Por exemplo, mdc(30, 500) = mdc(500, 30) = mdc(30, 500%30) = mdc(30, 20) = mdc(20, 10) = mdc(10, 0) = 10. 500 30 20 16 30 20 10 1 20 10 0 2
Observe-se que mdc(500, 30) = 17× 30 − 1 × 500 j´a que
10 = 30− 1 × 20 = 30 − (500 − 16 × 30) = 17 × 30 − 1 × 500
ou seja, mdc(500, 30) pode-se escrever na forma 500x + 30y para x, y∈ Z apropriados.
Lema 2 Quaisquer que sejam a, b∈ Z+, existem inteiros x e y tais que ax + by = mdc(a, b),
ou seja, mdc(a, b) ´e combina¸c˜ao linear inteira de a e b.
Para escrever mdc(100, 17) (isto ´e, 1) como combina¸c˜ao de 100 e 17, observe-se que: 100 17 15 5 17 15 2 1 15 2 1 7 2 1 0 2
Efectuando an´alise para tr´as, substituindo sucessivamente os restos de forma a conseguir fazer aparecer 100 e 17 (a e b iniciais) obtem-se a combina¸c˜ao procurada: 1 = 15− 7 × 2 = 15− 7(17 − 1 × 15) = 8 × 15 − 7 × 17 = 8(100 − 5 × 17) − 7 × 17 = 8 × 100 − 47 × 17.
Proposi¸c˜ao 11 Sendo a, b e c constantes inteiras, a equa¸c˜ao ax + by = c com x, y ∈ Z, tem solu¸c˜ao se e s´o se mdc(a, b)| c.
3.5. M´INIMO M ´ULTIPLO COMUM 31
Prova: Como mdc(a, b) divide a e divide b, tamb´em divide ax + by quaisquer que sejam x, y∈ Z. Portanto, para que ax + by = c tenha solu¸c˜ao ´e necess´ario que mdc(a, b) divida c.
Por outro lado, usando o facto de mdc(a, b) se poder escrever como combina¸c˜ao inteira de a e de b, temos mdc(a, b) = ama+ bmb para ma e mb inteiros adequados. Se mdc(a, b)| c,
ent˜ao c = mdc(a, b)mdc(a,b)c e mdc(a,b)c ∈ Z. Multiplicando mdc(a, b) = ama+ bmb por mdc(a,b)c
obtem-se mdc(a, b)mdc(a,b)c = a(mamdc(a,b)c ) + b(mbmdc(a,b)c ). Assim, vemos que se tomarmos
x = mamdc(a,b)c e y = mbmdc(a,b)c temos uma solu¸c˜ao inteira de ax + by = c. ut
Pode-se provar que (x, y) ∈ Z2 ´e solu¸c˜ao de ax + by = c sse x = m
amdc(a,b)c + kmdc(a,b)b e
y = mbmdc(a,b)c − kmdc(a,b)b , com k∈ Z qualquer.
3.5
M´ınimo M´
ultiplo Comum
Dados inteiros positivos a e b sabemos que ab ´e um m´ultiplo de a e de b, fazendo sentido determinar o menor inteiro positivo que ´e m´ultiplo comum a a e b, ou seja o m´ınimo m´ultiplo comum, mmc(a, b). Por defini¸c˜ao m ´e mmc(a, b) sse a| m, b | m e m | m0 para todo m0 tal
que a| m0 e b| m0. Assim, mmc(a, b) ´e um divisor de todos os m´ultiplos comuns de a e b.
Exemplo 9 mmc(320571127312, 2436525) = 2max(0,4)3max(20,6)5max(7,25)11max(27,0)31max(2,0) =
243205251127312.
Como a
mdc(a, b) e b
mdc(a, b) s˜ao primos entre si, podemos mostrar a Proposi¸c˜ao 12. Proposi¸c˜ao 12 Quaisquer que sejam a, b∈ Z+, mmc(a, b) = ab
mdc(a, b). Prova: ab = mdc(a, b) a mdc(a, b) mdc(a, b) b mdc(a, b) = mdc(a, b) a mdc(a, b) b mdc(a, b) | {z } mmc(a,b) mdc(a, b)
Para ver que mdc(a, b)mdc(a,b)a mdc(a,b)b ´e mmc(a, b), notemos que ´e m´ultiplo de a e de b. Por outro lado, para verificar que divide qualquer outro m´ultiplo m0 de a e de b, escrevamos
m0 = k1a e m0 = k2b para inteiros k1e k2 apropriados. Ent˜ao, m0= k1mdc(a, b)mdc(a,b)a e m0 =
k2mdc(a, b)mdc(a,b)b , pelo que k1mdc(a,b)a = k2mdc(a,b)b . Como mdc(a,b)b e mdc(a,b)a s˜ao primos entre
si, b
mdc(a,b) tem que dividir k1. Assim, k1= b mdc(a,b)k
0
1para algum k10 e consequentemente, m0 = b
mdc(a,b)k01mdc(a, b)mdc(a,b)a e portanto m0 ´e m´ultiplo de mdc(a, b) b mdc(a,b)
a
mdc(a,b). Conclui-se
que mdc(a, b) b
3.6. CONGRUˆENCIAS 32
3.6
Congruˆ
encias
Dados b∈ Z+ e x, y ∈ Z dizemos que x e y s˜ao congruentes m´odulo b se e s´o se x − y for
m´ultiplo de b, escrevendo x ≡ y (mod b). Tal ´e equivalente a dizer que x e y d˜ao o mesmo resto quando divididos por b. De facto, se x = qxb + rx e y = qyb + ry com 0 ≤ rx < b e
0≤ ry < b, ent˜ao x− y = (qx− qy)b + (rx − ry) e portanto x− y ´e m´ultiplo de b se e s´o se
rx− ry o for. Mas, como 0≤ rx < b e 0≤ ry < b, podemos concluir que−b < rx− ry < b, e
consequentemente rx− ry ´e m´ultiplo de b se e s´o se for zero. Portanto, x≡ y (mod b) sse os
restos da divis˜ao de x e y por b s˜ao iguais. (Escrevemos qx, qy e rx, ry em vez de q1, q2 e r1, r2
para indicar que esses quocientes e restos dependem de x e y respectivamente.)
As rela¸c˜oes de congruˆencias tˆem algumas propriedades interessantes (e importantes). Por exemplo, a “congruˆencia m´odulo 2” decomp˜oe os inteiros em dois conjuntos:
{x : x ∈ Z, x ≡ 0 (mod 2)} = {2k : k ∈ Z} = {pares} {x : x ∈ Z, x ≡ 1 (mod 2)} = {1 + 2k : k ∈ Z} = {´ımpares}
A rela¸c˜ao de “congruˆencia m´odulo b” (para b∈ Z+) decomp˜oe os inteiros em b conjuntos
{x : x ∈ Z, x ≡ 0 (mod b)} e {x : x ∈ Z, x ≡ 1 (mod b)}, . . . , {x : x ∈ Z, x ≡ b − 1 (mod b)}, sendo cada um identificado por um dos b restos poss´ıveis.
Outra das propriedades interessantes da rela¸c˜ao de congruˆencia ´e ser preservada pelas opera¸c˜oes de soma, subtrac¸c˜ao e produto, ou seja, se x1≡ y1(mod b) e x2 ≡ y2(mod b) ent˜ao
x1± x2≡ y1± y2(mod b) e x1× x2≡ y1× y2(mod b).
O exemplo seguinte ilustra uma das aplica¸c˜oes de congruˆencias.
Exemplo 10 Suponha que se quer resolver 5x + 3y = 1 para x, y∈ Z. Como 5x + 3y = 1 ⇔ 5x− 1 = 3(−y) podemos come¸car por resolver 5x ≡ 1 (mod 3). Tem-se 5x ≡ 1 (mod 3) ⇔ 2x≡ 1 (mod 3). Por outro lado, 2x ≡ 1 (mod 3) ⇔ (−1)x ≡ 1 (mod 3), ou seja x ≡ (−1) (mod 3), isto ´e x≡ 2 (mod 3). Assim, 5x ≡ 1 (mod 3) se e s´o se x = 2 + 3k para algum k ∈ Z.
Voltando `a equa¸c˜ao inicial, temos 5x + 3y = 1 ⇔ 5(2 + 3k) + 3y = 1 ⇔ y = −3 − 5k concluindo-se que as solu¸c˜oes de 5x + 3y = 1 s˜ao os pontos (x, y) da forma x = 2 + 3k e y =−3 − 5k, com k ∈ Z.
Cap´ıtulo 4
Indu¸
c˜
ao Matem´
atica
O m´etodo de demonstra¸c˜ao por indu¸c˜ao matem´atica (ou indu¸c˜ao finita) ser´a bastante usado durante o curso pelo que ´e conveniente introduzi-lo (ou record´a-lo).
4.1
Princ´ıpio de Indu¸
c˜
ao Matem´
atica
Imagine uma escada com uma infinidade de degraus. N˜ao ´e uma escada com um n´umero enorme de degraus! Esta escada, tem sempre um degrau acima de qualquer outro que consi-dere. Suponha que ´e verdade (4.1).
“Se conseguir chegar at´e um degrau, ent˜ao tamb´em consigo chegar ao seguinte.” (4.1) Se nada mais for dito, n˜ao pode concluir que “consegue chegar ao 16o¯ degrau”.
Suponha agora n˜ao s´o (4.1) mas tamb´em (4.2).
“Consigo chegar ao 13o¯ degrau” (4.2)
O que pode concluir? Como consegue chegar ao 13o¯ e ´e verdade (4.1), ent˜ao consegue chegar ao 14o¯. Como consegue chegar ao 14o¯ e ´e verdade (4.1), ent˜ao consegue chegar ao 15o¯. Como consegue chegar ao 15o¯ e ´e verdade (4.1), ent˜ao consegue chegar ao 16o¯. De (4.1) e (4.2), conclui-se (4.3).
“Consegue chegar ao n-´esimo degrau, qualquer que seja n≥ 13.” (4.3) Como n˜ao ´e dito sobre de que forma chegou ao 13o¯ degrau, nada pode concluir sobre a possibilidade de chegar ao degrau n, para n < 13.
Mas, suponha agora que (4.4) ´e verdade.