Página 1 de 2

Números automórficos

MensagemEnviado: Segunda Dez 01, 2008 5:43 pm
por jap
Deixo aqui o primeiro problema ou desafio para os aprendizes de Python (e para os outros também, mas é suposto a solução ser apresentada em Python!).

A ideia é deixar nesta secção alguns pequenos problemas que possam ser úteis para praticar Python - por exemplo, que possam servir para destacar alguns aspectos sintácticos da linguagem - mas que sejam simultaneamente interessantes, intrigantes e divertidos! :P


Problema:

Um número inteiro positivo n é dito automórfico se a representação decimal de n^2 terminar no número n. Por exemplo, 76 é automórfico pois 76 \times 76 = 5776. Estes números também são conhecidos por números curiosos, por possuírem várias propriedades notáveis. Existem três números automórficos de um só dígito (1, 5, 6) e apenas dois números automórficos de 2 dígitos (25, 76).
Escrevam um programa que calcule os primeiros 10 números automórficos. :wink:

Re: Números automórficos

MensagemEnviado: Segunda Dez 01, 2008 6:07 pm
por hexphreak
Não vou deixar aqui a solução para dar espaço aos nossos newbies, mas apenas deixar algumas propriedades que tornam estes números curiosos e que vos podem ajudar a tornar o programa mais eficiente. Não as vou provar, mas também não é difícil e podem divertir-se a fazê-lo, como uma pausa na programação :wink:

Para um dado número de dígitos k, existem no máximo dois números automórficos com k dígitos (à excepção do caso k=1, para o qual há três). A soma destes dois números é 10^k+1, sendo que um termina em 5 e o outro em 6. Para além disto, se assumirmos que um número cujo primeiro dígito é zero pode ser automórfico - por exemplo, 0625^2 = 390625 -, todos os números automórficos à excepção dos três primeiros resultam de adicionar um dígito ao início do número. Por exemplo, a cadeia iniciada por 5 dá-nos 5 - 25 - 625 - 0625 - 90625 - ...


P.S.: Claro que no vosso programa não contam com os números começados por 0! :P

Re: Números automórficos

MensagemEnviado: Segunda Dez 01, 2008 6:11 pm
por jap
hexphreak Escreveu:Não vou deixar aqui a solução para dar espaço aos nossos newbies, mas apenas deixar algumas propriedades que tornam estes números curiosos e que vos podem ajudar a tornar o programa mais eficiente. Não as vou provar, mas também não é difícil e podem divertir-se a fazê-lo, como uma pausa na programação :wink:

Para um dado número de dígitos k, existem no máximo dois números automórficos com k dígitos (à excepção do caso k=1, para o qual há três). A soma destes dois números é 10^k+1, sendo que um termina em 5 e o outro em 6. Para além disto, se assumirmos que um número cujo primeiro dígito é zero pode ser automórfico - por exemplo, 0625^2 = 390625 -, todos os números automórficos à excepção dos três primeiros resultam de adicionar um dígito ao início do número. Por exemplo, a cadeia iniciada por 5 dá-nos 5 - 25 - 625 - 0625 - 90625 - ...


P.S.: Claro que no vosso programa não contam com os números começados por 0! :P


Em bem disse que estes números eram curiosos! :lol:

Re: Números automórficos

MensagemEnviado: Segunda Dez 01, 2008 6:18 pm
por Ivo_Timóteo
N---------N^2
1---------1
5---------25
6---------36
25--------625
76--------5776
376-------141376
625-------390625
9376------87909376
90625-----8212890625
109376----11963109376

Aqui estão os 10 primeiros números calculados em python. Não vou por já o código para outros pensarem :)
[1, 5, 6, 25, 76, 376, 625, 9376, 90625, 109376]

Re: Números automórficos

MensagemEnviado: Segunda Dez 01, 2008 7:09 pm
por jap
Isso mesmo! :wink:

Vamos então esperar que o primeiro newbie apresente o seu programa em Python! 8)

Re: Números automórficos

MensagemEnviado: Segunda Dez 01, 2008 8:29 pm
por RicardoCampos
Pessoalmente acho que vou é provar as propriedades :P

Mas Henrique, os números podem começar com 0!.

Claro que 0! = 1 por definição.

Re: Números automórficos

MensagemEnviado: Segunda Dez 01, 2008 8:41 pm
por hexphreak
Por definição é como quem diz, pela função Peixinho :P

Re: Números automórficos

MensagemEnviado: Terça Dez 02, 2008 2:47 pm
por sagardipak
RicardoCampos Escreveu:Pessoalmente acho que vou é provar as propriedades :P

Mas Henrique, os números podem começar com 0!.

Claro que 0! = 1 por definição.


Este Ricardo deve achar que tem piada... Que seca!

(Só mesmo porque eu ia fazer essa piada :P)

Re: Números automórficos

MensagemEnviado: Terça Dez 02, 2008 4:28 pm
por Bruno Oliveira
Lol, essa teve piada, pelo menos para mim porque não me tinha lembrado disso, e claro que o Henrique também não, ele só pôs ponto de exclamação para acentuar o seu PS :lol:

Re: Números automórficos

MensagemEnviado: Terça Dez 02, 2008 6:24 pm
por jap
Bruno Oliveira Escreveu:Lol, essa teve piada, pelo menos para mim porque não me tinha lembrado disso, e claro que o Henrique também não, ele só pôs ponto de exclamação para acentuar o seu PS :lol:

:lol:

Re: Números automórficos

MensagemEnviado: Sábado Dez 06, 2008 12:42 am
por Bruno Oliveira
Já consegui finalmente(!) escrever o código para calcular os números automórficos :D , desta vez e acho por bem dizer, tive uma pequena ajuda cá em casa, mas assim que puder postarei aqui o código. :wink:

Agora é capaz de ser chato porque temos teste intermédio de matemática esta semana e mesmo sendo probabilidades(não é o que mais aprecie), não se pode facilitar, mas assim que puder vou metê-lo aqui para poderem dar algumas sugestões/críticas. :wink:

Re: Números automórficos

MensagemEnviado: Sábado Dez 06, 2008 1:07 am
por RicardoCampos
Segundo eu me lembro do ano passado... Sim, pode-se facilitar. E muito.

Re: Números automórficos

MensagemEnviado: Sábado Dez 06, 2008 2:57 pm
por Bruno Oliveira
Segundo eu me lembro do ano passado... Sim, pode-se facilitar. E muito.


Pronto... :lol:

Talvez possa :XD

Re: Números automórficos

MensagemEnviado: Sábado Dez 06, 2008 2:58 pm
por Bruno Oliveira
Bem, cá vai então o código :wink: :

Código: Seleccionar Todos
from math import *
for x in range(1,10000000,1):
    a= x*x
    exp=log10(x)
    i=int(exp)+1
    res=a-(int(a/(10**i))*10**i)
    if x==res:
      print res
   


Digam da vossa justiça :D

Re: Números automórficos

MensagemEnviado: Sábado Dez 06, 2008 4:07 pm
por jap
Obrigado, Bruno


Pelo teu primeiro programa em Python! :hands:

É engraçado, pois o teu programa é altamente não pitónico - os pitonistas, como o Ivo, saberão porquê! - mais logo já te explico a razão deste comentário. :lol:

Nesta altura estou com acesso à rede muito limitado (sempre a cair), não estou em Coimbra, mas espero que mais logo já possa postar em condições!

Até logo,
abraço,

jap