MA553 – Teoria Aritmética dos números Antonio C. Campello, RA

Propaganda
MA553 – Teoria Aritmética dos números
Antonio C. Campello, RA 059076
Isabel Leal, RA 061533
Problema proposto: calcular o valor de
e
[e ]
nas bases numéricas 10, 2, 7 e 4.
Desenvolvimento: O primeiro passo do problema foi o cálculo do valor pedido na base
10, feito diretamente utilizando a linguagem Maple, de grande suporte computacional
simbólico.
O segundo passo foi a criação de uma rotina, também na linguagem Maple, que
permitisse a mudança de um número natural na base 10 para uma base qualquer,
digitada pelo usuário.
O algoritmo da rotina está descrito pelo “pseudo-código” a seguir:
1 - Recebe m, b (número que será convertido, e base para a qual ele será convertido)
2 – Se m = 0, pare e retorne 0.
Caso contrário, i = 0, resultado = 0, n = m
3 - Faça: resultado = resultado + 10^i * (resto da divisão de n por b)
n = maxInteiro(n/b)
i = i+1
4 - Se n > 0, vá para 3.
5 – Retorne resultado. Fim.
O passos descritos decorrem de maneira quase imediata do algoritmo de Euclides para
1
2
n
divisão, e da fatoração de n em uma base b, da forma n=a 0a 1 b a 2 b ... a n b , em
que os a's são os algarismos de n na base b, e, portanto, estão entre 0 e b-1.
É importante observar também que o número digitado pelo usuário para ser
convertido deve estar na base 10, originalmente. Caso o que se queira fazer é mudar
entre duas bases arbitrárias, é possível primeiro mudar para a base 10 (utilizando a
representação de um número em expoentes decimais) e depois utilizar o algoritmo
descrito.
A rotina em Maple implementada (com os comentários após o símbolo “#”) é a
seguinte:
mudaBase := proc(m, b) #Passo 1 do algoritmo
local resultado, i, n:
n := m:
resultado := 0:
i := 0: #Passo 2
while n > 0 do
resultado := resultado + (10^i * (n mod b)): #Passo 3 do algoritmo
n := floor(n/b):
i := i+1:
end do:
resultado; #Passo 5
end:
numero := floor(evalf(exp(1)^(exp(1)^Pi))); #Calcula o valor da expressão na base 10
mudaBase(numero, 10); #”Muda” para a base 10
mudaBase(numero, 2); #Muda o valor para a base 2...
mudaBase(numero, 7);
mudaBase(numero, 4);

Por fim, os valores calculados para a expressão [ee ] , nas suas respectivas bases
foram:
Base 10 = 11216958622
Base 2 = 1010011100100101010011010010011110
Base 7 = 544652401162
Base 4 = 22130211103102132
Download