Claro, claro...
Este e um problema meio bracal, mas nao tento (e
possivel programar computadores de um modo mais
esperto, acredite!).
Bem, ha uma formula que diz quale a maior potencia de
2 que divide n!.
Veja um caso particular pequeno: n = 16
0[2^0=1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1[2^1=2] 2 4 6 8 10 12 14 16
2[2^2=4] 4 8 12 16
3[2^3=8] 8 16
4[2^4=16] 16
Pergunta: O que e essa tabela?
Resposta: Ela te diz: na linha onde esta marcado o
numero n, o valor entre colchetes diz quais os numeros
tem este valor como multiplo.
Veja que cada linha contem, em media, metade da
anterior.
Ta lancada a dica.
Bem, a somatoria das f's e algo mais chato...
<[EMAIL PROTECTED]> escreveu:
> >Sabendo que f(n) � maior pot�ncia de 2 que
> divide n! ,
> >determine o valor de
> >f(1) + f(2) +...+ f(1023) .
>
> Vejamos mais de perto:
>
> 1! = 1 a maior pot�ncia de 2 que divide 1! � 0 (2^0
> = 1).
> 2! = 2 a maior pot�ncia de 2 que divide 2! � 1 (2^1
> = 2).
> 3! = 6=3.2.1 a maior pot�ncia de 2 que divide 3! �
> 1 (2^1 = 2).
> 4! = 24 = 4.3.2.1 a maior pot�ncia de 2 que divide
> 4! � 3 (2^3 = 8).
> ...
> Pelos exemplos acima parece que n�o h� uma regra
> geral.
>
> Note que com 5! por exemplo, a maior pot�ncia de 2
> que divide 5!
> continua sendo 3 (porque 5 � primo).
>
> Mas no caso de 6 (que n�o � primo)
> a maior pot�ncia de 2 que divide 6! ser� 4.
>
> Pe�o desculpas a quem n�o sabe C,
> mas eu faria um programa
> de computador para calcular a soma (pois o
> computador atrofiou meu c�rebro)
> e desafio algu�m a pensar em algo mais "for�a bruta"
> e feio que isso:
>
> /* calcula a soma f(1) + f(2) + ...+ f(x) */
> unsigned int soma_pot2_fatorial( unsigned int x)
> { int i;
> soma =0
> for (i = 1; i <= x; i++)
> {
> int k = fatorial (i); /* calcula o fatorial
> de i -- note que k �
> uma vari�vel de escopo local */
> while (( k % 2) == 0){ /* enquanto o resto
> da divis�o por 2 for
> zero */
> soma = soma++; /* incrementa soma */
> k = k/2; /* k recebe a parte inteira da
> divis�o de k por 2 */
> }// fim enquanto
> }// volta ao la�o com o valor de i
> incrementado.
> return soma;
> }
>
> Acho que n�o isso n�o ajuda, mas
> pelo menos calcula a soma pedida ...
>
> []s Ronaldo L. Alonso
>
>
=========================================================================
> Instru��es para entrar na lista, sair da lista e
> usar a lista em
> http://www.mat.puc-rio.br/~nicolau/olimp/obm-l.html
>
=========================================================================
>
__________________________________________________
Converse com seus amigos em tempo real com o Yahoo! Messenger
http://br.download.yahoo.com/messenger/
=========================================================================
Instru��es para entrar na lista, sair da lista e usar a lista em
http://www.mat.puc-rio.br/~nicolau/olimp/obm-l.html
=========================================================================