Olá! Enquanto ainda não implementamos o uso de de Latex aqui no blog, vou inaugurar a seção de matemática com uma curiosidade. É bastante simples.
O problema consiste em saber quantos dígitos tem um número x, inteiro, qualquer.
Antes de qualquer coisa é preciso notar que qualquer número inteiro está entre duas potências consecutivas de 10. Isto é:
O problema consiste em saber quantos dígitos tem um número x, inteiro, qualquer.
Antes de qualquer coisa é preciso notar que qualquer número inteiro está entre duas potências consecutivas de 10. Isto é:
10^k =< x < 10^(k+1)
Feito isso, vamos a um exemplo, k=2:
10^2 =< x < 10^3
Experimentando alguns valores, perceberemos que x terá exatamente 3 dígitos. Isto é fácil verificar, pois ele pode ser escrito da forma: 100*a + 10*b + c, onde a,b,c são inteiros que representam seus algarismos. Apesar de isto não constituir uma prova matemática, afirmaremos
que, então, o número de algarismos de x será k+1.
que, então, o número de algarismos de x será k+1.
Tendo esta lei em mão, calculemos o número de algarismos de 3^2009!
10^k =< 3^2009 < 10^(k+1) - aplicando log na base 10 nesta desilgualdade, ficamos com:
k =< 2009*log(3) < k+1 - com uma calculadora resolvemos log(3),
k =< 2009*0,477 < k+1 - então,
k =< 958,536 < k+1 - como k é inteiro, então k=958 e k+1=959
Portanto, 3^2009 possui 959 dígitos!
Até a próxima.
8 comentários:
Super útil, né Tiago! :H
;*
Clássica xD
Muito legal esse problema 8D
Podemos definir uma função que me retorna diretamente? Seria algo do tipo int( log(x) ), com int sendo a função que retorna o inteiro 'mais próximo' (devidamente definida) do argumento. Está correto?
Acredito que seja isso mesmo. Mas como eu colocaria para aproximar o float para um int logo acima, isto é, o k+1?
Não apenas isso, reparei num detalhe. Como você disse que x deveria ser inteiro, a função fica errada. Essa função valeria apenas para inteiros positivos (ou seja, naturais sem zero). Acho que a função correta seria
f : Z* --> Z* ,
x |--> int( log(|x|) )
Z* seriam os inteiros sem zero. Claro que usando a int que você observou. Eu testei para alguns casos, e deu certo. Interessante também é verificar o gráfico dessa função f.
PS hehehe float lembra muito computação... int é a função que retorna o inteiro seguinte ao real dado como argumento.
Entendi. Sobre o float, é que eu tava programando, aí embaralhou minha mente.
Quando eu fiz isso, eu nem tinha pensado sobre os inteiros negativos (falha minha). Mas quando usamos números negativos. Ex: 122. Então -10^3 < 122 =< 10^2. 3 seria o número de dígitos, então vc deveria aproximar "para trás". Correto?
Vamos aplicar na função f definida?
f(-122) = int( log( |-122| ) )
f(-122) = int( 2.08... )
f(-122) = 3
Então, está aparentemente certinho, pelo que parece. Isso porque os expoentes das partes desiguais que seguram o resultado não modificam-se. Talvez tenha um caso em que não consigo pensar agora...
Desculpa, nao tinha visto o módulo. É, parece que a função tá bem definida.
Postar um comentário