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 0a 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