FAQ

[Python-es] cubo perfecto

Pavel Daniel Lopez Castillo
Mar 15, 2010 at 2:25 pm
Necesito una funcion que me permita conocer si un numero es un cubo perfecto ejemplo

cubos perfectos: 1,8,27,64 etc...



------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20100315/357708ba/attachment.html>
reply

Search Discussions

23 responses

  • Marmolro at Mar 15, 2010 at 2:36 pm
    Buenas,

    con la función inversa básicamente :) :
    math.log(27,3).is_integer()
    True


    2010/3/15 Pavel Daniel Lopez Castillo <pdlopez en uci.cu>
    Necesito una funcion que me permita conocer si un numero es un cubo
    perfecto ejemplo

    cubos perfectos: 1,8,27,64 etc...




    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/
    ------------ próxima parte ------------
    Se ha borrado un adjunto en formato HTML...
    URL: <http://mail.python.org/pipermail/python-es/attachments/20100315/165f8ca3/attachment.html>
  • Marmolro at Mar 15, 2010 at 2:38 pm
    perdón, se me fue la mano je je:

    math.pow(27,1./3).is_integer()




    2010/3/15 marmolro <marmolro en gmail.com>
    Buenas,

    con la función inversa básicamente :) :
    math.log(27,3).is_integer()
    True


    2010/3/15 Pavel Daniel Lopez Castillo <pdlopez en uci.cu>
    Necesito una funcion que me permita conocer si un numero es un cubo
    perfecto ejemplo

    cubos perfectos: 1,8,27,64 etc...




    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/
    ------------ próxima parte ------------
    Se ha borrado un adjunto en formato HTML...
    URL: <http://mail.python.org/pipermail/python-es/attachments/20100315/43a5d8ab/attachment.html>
  • Daniel Garcia at Mar 15, 2010 at 2:42 pm

    El lun, 15-03-2010 a las 15:38 +0100, marmolro escribió:
    perdón, se me fue la mano je je:


    math.pow(27,1./3).is_integer()
    Podría ser verdad, pero la precisión puede dar problemas aquí:
    math.pow(64,1./3)
    3.9999999999999996



    2010/3/15 marmolro <marmolro en gmail.com>
    Buenas,


    con la función inversa básicamente :) :

    math.log(27,3).is_integer()
    True


    2010/3/15 Pavel Daniel Lopez Castillo <pdlopez en uci.cu>
    Necesito una funcion que me permita conocer si un
    numero es un cubo perfecto ejemplo

    cubos perfectos: 1,8,27,64 etc...






    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/





    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/
    ------------ próxima parte ------------
    A non-text attachment was scrubbed...
    Name: signature.asc
    Type: application/pgp-signature
    Size: 197 bytes
    Desc: Esto es una parte de mensaje firmado digitalmente
    URL: <http://mail.python.org/pipermail/python-es/attachments/20100315/c6430ae0/attachment.pgp>
  • Pavel Daniel Lopez Castillo at Mar 15, 2010 at 2:52 pm
    Exacto ese es el problema que tengo, pero se puede resolver con
    round(numero ** (1.0 / 3))

    pero para 26 por ejempo me da 3 y necesito que sea 2, me hace falta que si es un cubo perfecto me de la raiz exacta pero si no lo es me de la parte entera del flotante

    raiz cubica de 26 = 2.96249606841 parte entera = 2
    ------------ próxima parte ------------
    Se ha borrado un adjunto en formato HTML...
    URL: <http://mail.python.org/pipermail/python-es/attachments/20100315/e529ad21/attachment.html>
  • Marmolro at Mar 15, 2010 at 3:00 pm

    Para estos casos yo suelo sustituir el is_integer() por:

    round(64**(1./3),0) - 64**(1./3) < 10**-15
    True

    El valor de la aproximación ya lo fijas en función de la precisión que
    quieres. No lo conozco en detalle, pero supongo que se podría dar el caso de
    "falsos positivos".... ¿alguien conoce una técnica mejor?



    2010/3/15 Pavel Daniel Lopez Castillo <pdlopez en uci.cu>
    Exacto ese es el problema que tengo, pero se puede resolver con
    round(numero ** (1.0 / 3))

    pero para 26 por ejempo me da 3 y necesito que sea 2, me hace falta que si
    es un cubo perfecto me de la raiz exacta pero si no lo es me de la parte
    entera del flotante

    raiz cubica de 26 = 2.96249606841 parte entera = 2

    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/
    ------------ próxima parte ------------
    Se ha borrado un adjunto en formato HTML...
    URL: <http://mail.python.org/pipermail/python-es/attachments/20100315/dc9829b8/attachment.html>
  • Enrique Fernandez at Mar 15, 2010 at 3:09 pm
    A mi si hago
    round(nro**(float(1.0/3.0)))
    me da como resultado 3
    Saludos
    Enrique


    marmolro escribió:
    Para estos casos yo suelo sustituir el is_integer() por:
    round(64**(1./3),0) - 64**(1./3) < 10**-15
    True

    El valor de la aproximación ya lo fijas en función de la precisión que
    quieres. No lo conozco en detalle, pero supongo que se podría dar el
    caso de "falsos positivos".... ¿alguien conoce una técnica mejor?



    2010/3/15 Pavel Daniel Lopez Castillo <pdlopez en uci.cu
    <mailto:pdlopez en uci.cu>>

    Exacto ese es el problema que tengo, pero se puede resolver con
    round(numero ** (1.0 / 3))

    pero para 26 por ejempo me da 3 y necesito que sea 2, me hace
    falta que si es un cubo perfecto me de la raiz exacta pero si no
    lo es me de la parte entera del flotante

    raiz cubica de 26 = 2.96249606841 parte entera = 2

    _______________________________________________
    Python-es mailing list
    Python-es en python.org <mailto:Python-es en python.org>
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/


    ------------------------------------------------------------------------

    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/
  • Daniel Garcia at Mar 15, 2010 at 3:18 pm

    El lun, 15-03-2010 a las 16:00 +0100, marmolro escribió:
    Para estos casos yo suelo sustituir el is_integer() por:

    round(64**(1./3),0) - 64**(1./3) < 10**-15
    True


    El valor de la aproximación ya lo fijas en función de la precisión que
    quieres. No lo conozco en detalle, pero supongo que se podría dar el
    caso de "falsos positivos".... ¿alguien conoce una técnica mejor?
    Una forma podría ser:

    (x**(1./3))**3 == x

    ------------ próxima parte ------------
    A non-text attachment was scrubbed...
    Name: signature.asc
    Type: application/pgp-signature
    Size: 197 bytes
    Desc: Esto es una parte de mensaje firmado digitalmente
    URL: <http://mail.python.org/pipermail/python-es/attachments/20100315/104f6245/attachment.pgp>
  • Daniel Garcia at Mar 15, 2010 at 3:20 pm

    El lun, 15-03-2010 a las 16:18 +0100, Daniel Garcia escribió:
    El lun, 15-03-2010 a las 16:00 +0100, marmolro escribió:
    Para estos casos yo suelo sustituir el is_integer() por:

    round(64**(1./3),0) - 64**(1./3) < 10**-15
    True


    El valor de la aproximación ya lo fijas en función de la precisión que
    quieres. No lo conozco en detalle, pero supongo que se podría dar el
    caso de "falsos positivos".... ¿alguien conoce una técnica mejor?
    Una forma podría ser:

    (x**(1./3))**3 == x
    Esto no vale para nada, quiero decir, sólo vale para saber que estás
    teniendo un fallo de precisión. Me he liado entre unas cosas y otras.

    ------------ próxima parte ------------
    A non-text attachment was scrubbed...
    Name: signature.asc
    Type: application/pgp-signature
    Size: 197 bytes
    Desc: Esto es una parte de mensaje firmado digitalmente
    URL: <http://mail.python.org/pipermail/python-es/attachments/20100315/e1b4294c/attachment.pgp>
  • Kiko at Mar 15, 2010 at 3:55 pm

    El 15 de marzo de 2010 16:20, Daniel Garcia <dani en danigm.net> escribió:

    El lun, 15-03-2010 a las 16:18 +0100, Daniel Garcia escribió:
    El lun, 15-03-2010 a las 16:00 +0100, marmolro escribió:
    Para estos casos yo suelo sustituir el is_integer() por:

    round(64**(1./3),0) - 64**(1./3) < 10**-15
    True


    El valor de la aproximación ya lo fijas en función de la precisión que
    quieres. No lo conozco en detalle, pero supongo que se podría dar el
    caso de "falsos positivos".... ¿alguien conoce una técnica mejor?
    Una forma podría ser:

    (x**(1./3))**3 == x
    Esto no vale para nada, quiero decir, sólo vale para saber que estás
    teniendo un fallo de precisión. Me he liado entre unas cosas y otras.


    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/
    Yo, si hago:

    int(nro**(1./3)) me da siempre la parte entera del cubo del número, sea un
    cubo perfecto o no.

    <file:///D:/kiko/20090226-20090410-EE_CE_RadonaIRadonaIIBullana/CE_radonasBullana/TablasDeRadonaII.xlsx>
    ------------ próxima parte ------------
    Se ha borrado un adjunto en formato HTML...
    URL: <http://mail.python.org/pipermail/python-es/attachments/20100315/66c3aaf6/attachment.html>
  • José Luis Torre Hernández at Mar 15, 2010 at 4:52 pm

    El 15 de marzo de 2010 16:55, Kiko <kikocorreoso en gmail.com> escribió:

    El 15 de marzo de 2010 16:20, Daniel Garcia <dani en danigm.net> escribió:
    El lun, 15-03-2010 a las 16:18 +0100, Daniel Garcia escribió:
    El lun, 15-03-2010 a las 16:00 +0100, marmolro escribió:
    Para estos casos yo suelo sustituir el is_integer() por:

    round(64**(1./3),0) - 64**(1./3) < 10**-15
    True


    El valor de la aproximación ya lo fijas en función de la precisión que
    quieres. No lo conozco en detalle, pero supongo que se podría dar el
    caso de "falsos positivos".... ¿alguien conoce una técnica mejor?
    Una forma podría ser:

    (x**(1./3))**3 == x
    Esto no vale para nada, quiero decir, sólo vale para saber que estás
    teniendo un fallo de precisión. Me he liado entre unas cosas y otras.


    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/
    Yo, si hago:

    int(nro**(1./3)) me da siempre la parte entera del cubo del número, sea un
    cubo perfecto o no.


    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/
    Lo primero que habría que hacer es definir un poco más el problema.
    Se trata de números enteros o de números reales.

    Saludos
    José Luis Torre
    ------------ próxima parte ------------
    Se ha borrado un adjunto en formato HTML...
    URL: <http://mail.python.org/pipermail/python-es/attachments/20100315/cf0ebc5f/attachment.html>
  • Juan Ignacio at Mar 15, 2010 at 4:59 pm

    Lo primero que habría que hacer es definir un poco más el problema.
    Se trata de números enteros o de números reales.
    Y también saber si hay algún límite preestablecido.

    Quizá el módulo Decimal <http://docs.python.org/library/decimal.html>
    tambien pueda ser de ayuda.
    Saludos
    José Luis Torre

    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/


    --
    Juan Ignacio Rodríguez de León
    Movil: 605 890514
    E-Mail: euribates en gmail.com
    http://elornitorrincoenmascarado.blogspot.com/
    http://descon2.com/
  • Chema Alonso at Mar 15, 2010 at 5:06 pm

    On Mon, Mar 15, 2010 at 05:52:33PM +0100, José Luis Torre Hernández wrote:
    El 15 de marzo de 2010 16:55, Kiko <kikocorreoso en gmail.com> escribió:
    El 15 de marzo de 2010 16:20, Daniel Garcia <dani en danigm.net> escribió:
    El lun, 15-03-2010 a las 16:18 +0100, Daniel Garcia escribió:
    El lun, 15-03-2010 a las 16:00 +0100, marmolro escribió:
    Para estos casos yo suelo sustituir el is_integer() por:

    round(64**(1./3),0) - 64**(1./3) < 10**-15
    True


    El valor de la aproximación ya lo fijas en función de la precisión que
    quieres. No lo conozco en detalle, pero supongo que se podría dar el
    caso de "falsos positivos".... ¿alguien conoce una técnica mejor?
    Una forma podría ser:

    (x**(1./3))**3 == x
    Esto no vale para nada, quiero decir, sólo vale para saber que estás
    teniendo un fallo de precisión. Me he liado entre unas cosas y otras.


    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/
    Yo, si hago:

    int(nro**(1./3)) me da siempre la parte entera del cubo del número, sea un
    cubo perfecto o no.


    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/
    Lo primero que habría que hacer es definir un poco más el problema.
    Se trata de números enteros o de números reales.

    Saludos
    José Luis Torre
    Mira a ver si te funciona esto:

    import math
    l = lambda x: not math.modf(x**(1.0/3))[0]
    l(8)

    Saludos.
    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/
  • Pepe Aracil at Mar 15, 2010 at 5:01 pm
    Tambien puedes poner la precision en la llamada a round()
    round(64**(1./3),5).is_integer()
    True
    round(65**(1./3),5).is_integer()
    False
    Saludos.


    marmolro escribió:
    Para estos casos yo suelo sustituir el is_integer() por:
    round(64**(1./3),0) - 64**(1./3) < 10**-15
    True

    El valor de la aproximación ya lo fijas en función de la precisión que
    quieres. No lo conozco en detalle, pero supongo que se podría dar el
    caso de "falsos positivos".... ¿alguien conoce una técnica mejor?



    2010/3/15 Pavel Daniel Lopez Castillo <pdlopez en uci.cu
    <mailto:pdlopez en uci.cu>>

    Exacto ese es el problema que tengo, pero se puede resolver con
    round(numero ** (1.0 / 3))

    pero para 26 por ejempo me da 3 y necesito que sea 2, me hace
    falta que si es un cubo perfecto me de la raiz exacta pero si no
    lo es me de la parte entera del flotante

    raiz cubica de 26 = 2.96249606841 parte entera = 2

    _______________________________________________
    Python-es mailing list
    Python-es en python.org <mailto:Python-es en python.org>
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/


    ------------------------------------------------------------------------

    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/
  • Fabián Sellés Rosa at Mar 15, 2010 at 5:06 pm
    Simplemente moldealo a entero, no entiendo tú problema

    In [15]: int(math.log(24,3))
    Out[15]: 2

    In [16]: int(math.log(27,3))
    Out[16]: 3

    Un saludo
  • Pavel Daniel Lopez Castillo at Mar 15, 2010 at 5:48 pm
    Título: Suma de cubos
    Planteamiento



    Considere el intervalo de los números enteros [a, b] con (1 <= a <= b <= 10^18). Puede usted determinar la suma de todos los cubos perfectos que se encuentran entre a y b incluidos ellos?




    Descripción de Entrada


    Un entero T con la cantidad de casos en la primera línea de la entrada. Cada caso consiste en una línea con dos enteros a y b, que representan los extremos del intervalo.



    Descripción de Salida

    Una línea por cada caso, con la suma de todos los cubos perfectos comprendidos entre a y b. mod 1000007.




    Ejemplo de Entrada

    3
    1 10
    27 27
    1 1000000000000000000


    Ejemplo de Salida

    9
    27
    441

    x=raiz_cubica(n)
    se que la formula (1/4) * x^2 * (x+1)^2 me da la sumatoria de los cubos hasta n

    este es mi problema
    ------------ próxima parte ------------
    Se ha borrado un adjunto en formato HTML...
    URL: <http://mail.python.org/pipermail/python-es/attachments/20100315/21016749/attachment.html>
  • Jose Caballero at Mar 15, 2010 at 6:21 pm
    Este ha sido el típico ejemplo donde una mala o incompleta explicación del
    problema no ha permitido ayudar correctamente.
    Nunca está de más leerse de vez en cuando este link
    http://www.sindominio.net/ayuda/preguntas-inteligentes.html
    Visto el problema, la solución está planteada en una de las respuestas del
    hilo. No busques si un número es cubo perfecto o no, calcula todos los cubos
    en el intervalo.






    El 15 de marzo de 2010 13:48, Pavel Daniel Lopez Castillo
    <pdlopez en uci.cu>escribió:
    *Título:* *Suma de cubos* *Planteamiento*


    Considere el intervalo de los números enteros [a, b] con (1 <= a <= b <=
    10^18). Puede usted determinar la suma de todos los cubos perfectos que se
    encuentran entre a y b incluidos ellos?


    *Descripción de Entrada*
    Un entero T con la cantidad de casos en la primera línea de la entrada.
    Cada caso consiste en una línea con dos enteros a y b, que representan los
    extremos del intervalo.


    *Descripción de Salida*
    Una línea por cada caso, con la suma de todos los cubos perfectos
    comprendidos entre a y b. mod 1000007.


    *Ejemplo de Entrada*
    3
    1 10
    27 27
    1 1000000000000000000

    *Ejemplo de Salida*
    9
    27
    441

    x=raiz_cubica(n)
    se que la formula (1/4) * x^2 * (x+1)^2 me da la sumatoria de los cubos
    hasta n

    este es mi problema

    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/
    ------------ próxima parte ------------
    Se ha borrado un adjunto en formato HTML...
    URL: <http://mail.python.org/pipermail/python-es/attachments/20100315/a20ba425/attachment.html>
  • Arnau Sanchez at Mar 15, 2010 at 9:04 pm

    On 15/03/10 18:48, Pavel Daniel Lopez Castillo wrote:

    Considere el intervalo de los números enteros [a, b] con (1 <= a <= b <=
    10^18). Puede usted determinar la suma de todos los cubos perfectos que
    se encuentran entre a y b incluidos ellos?
    Como comenta Jose, la falta de datos y contexto ha hecho que la gente fuera
    dando tumbos. De hecho, y una vez visto el enunciado, la pregunta que hiciste no
    parece relevante; no necesitas una función que te diga si un número es cubo
    perfecto o no, sino generar estos cubos, lo cual es mucho más sencillo.

    Pero aún nos falta contexto, ¿es un problema en el que debes usar fórmulas
    matemáticas (como comentas, se puede calcular directamente la suma de cubos), o
    es un ejercicio puramente informático en el que debes iterar a lo bruto?

    En ambos casos, como esto es claramente es un problema académico, deberías
    mostrarnos algo de código antes de que podamos seguir ayudándote.

    arnau
  • Ricardo M. García at Mar 16, 2010 at 11:40 am
    Ya veo que lo habeis aclarado, pero volviendo al problema original a modo de
    pasatiempo:
    La función del cubo perfecto es:

    y=x^3

    calculo su inversa:

    x=y^3
    log x = log y^3
    3*log y = log x
    log y = log x^(1/3)
    y= x^(1/3)

    Era de cajón, la inversa, es la raiz al cubo xDD
    El tema es, si tu le das 216 dependiendo la precisión de tu calculadora
    devuelva [5,999 ; 6,0001].
    Por ello debes tener el calculado en decimal y en otra variable redondeas,
    en este caso a 6.
    Haces la diferencia y su valor absoluto no puede salirse de un ERROR que TU
    tienes controlado.

    n_preciso = n**(1/3)
    n_redond = round(n_preciso)
    COTA_ERROR = 0.0000001
    esCuboMagico = abs(n_preciso - n_redond) < COTA_ERROR

    Un saludo.

    El 15 de marzo de 2010 22:04, Arnau Sanchez <pyarnau en gmail.com> escribió:
    On 15/03/10 18:48, Pavel Daniel Lopez Castillo wrote:

    Considere el intervalo de los números enteros [a, b] con (1 <= a <= b <=
    10^18). Puede usted determinar la suma de todos los cubos perfectos que
    se encuentran entre a y b incluidos ellos?
    Como comenta Jose, la falta de datos y contexto ha hecho que la gente fuera
    dando tumbos. De hecho, y una vez visto el enunciado, la pregunta que
    hiciste no parece relevante; no necesitas una función que te diga si un
    número es cubo perfecto o no, sino generar estos cubos, lo cual es mucho más
    sencillo.

    Pero aún nos falta contexto, ¿es un problema en el que debes usar fórmulas
    matemáticas (como comentas, se puede calcular directamente la suma de
    cubos), o es un ejercicio puramente informático en el que debes iterar a lo
    bruto?

    En ambos casos, como esto es claramente es un problema académico, deberías
    mostrarnos algo de código antes de que podamos seguir ayudándote.

    arnau

    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/
    ------------ próxima parte ------------
    Se ha borrado un adjunto en formato HTML...
    URL: <http://mail.python.org/pipermail/python-es/attachments/20100316/53f7919c/attachment.html>
  • Ricardo Cárdenes Medina at Mar 16, 2010 at 12:09 pm

    2010/3/16 Ricardo M. García <makiolo en gmail.com>:

    Por ello debes tener el calculado en decimal y en otra variable redondeas,
    en este caso a 6.
    Haces la diferencia y su valor absoluto no puede salirse de un ERROR que TU
    tienes controlado.

    n_preciso = n**(1/3)
    n_redond = round(n_preciso)
    COTA_ERROR = 0.0000001
    esCuboMagico = abs(n_preciso - n_redond) < COTA_ERROR
    Jo, menos mal que alguien lo ha comentado. Acabo de leerme el hilo
    entero y estaba acojonado viendo las soluciones que con un round se
    quedaban tan panchos... O_O. Si alguno de los que lo sugirió ha
    estudiado análisis numérico (otra de esas asignaturas que los alumnos
    universitarios de informática suelen desdeñar porque "no le ven
    uso")... ¡¡cate!!
  • Javier Santana at Mar 15, 2010 at 3:15 pm

    2010/3/15 Pavel Daniel Lopez Castillo <pdlopez en uci.cu>:
    Necesito una funcion que me permita conocer si un numero es un cubo perfecto
    ejemplo

    cubos perfectos: 1,8,27,64 etc...
    y por qué no hacerlo a lo animal?

    cubos_perfectos = dict((x*x*x, x) for x in range(MAX))

    if x in cubos_perfectos:
    print "cubo perfecto"

    :)



    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/
  • Omar Chumpitaz at Mar 15, 2010 at 3:53 pm
    Hola, esta no es la mejor solución pero tal vez te puede servir:

    import io
    numero=input("Ingrese un valor:")
    if numero>1000000000:
    print "Error: Numero excede los limites permitidos"
    else:
    existe=0
    for i in range(1,1000):
    cubo=i*i*i
    if cubo==numero:
    existe=1,
    print "Es cubo"
    if cubo>numero:
    break
    if existe==0:
    print "No es numero cubo"



    El 15 de marzo de 2010 09:25, Pavel Daniel Lopez Castillo
    <pdlopez en uci.cu>escribió:
    Necesito una funcion que me permita conocer si un numero es un cubo
    perfecto ejemplo

    cubos perfectos: 1,8,27,64 etc...




    _______________________________________________
    Python-es mailing list
    Python-es en python.org
    http://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/

    --
    ______________________________
    Atte.

    Omar Chumpitaz H.
    Gmail: programador.sistemas en gmail.com

    "La diferencia entre lo ordinario y lo extraordinario esta en el esfuerzo
    'extra' que le dedicas a tu objetivo"
    ------------ próxima parte ------------
    Se ha borrado un adjunto en formato HTML...
    URL: <http://mail.python.org/pipermail/python-es/attachments/20100315/c892e184/attachment.html>
  • Medardo Rodriguez (Merchise Group) at Mar 17, 2010 at 1:27 pm
    <code>
    # -*- coding: utf-8 -*-

    def check_cube(value):
    base = int(round(value**(1.0/3), 0))
    return (base**3 == value, base)

    if __name__ == '__main__':
    ok, base = check_cube(input('Número a calcular si es cubo perfecto: '))
    if (ok):
    print 'Es CUBO PERFECTO de:', base
    else:
    print 'NO es cubo perfecto'
    </code>


    Saludos
  • SmartDust at Mar 16, 2010 at 1:52 pm
    Llego tarde al hilo pero la solución asumiendo que 'n' es entero, es:

    int( round( n ** (1.0/3) ) ) ** 3 == n


    El Lunes, 15 de Marzo de 2010, Pavel Daniel Lopez Castillo escribió:
    Necesito una funcion que me permita conocer si un numero es un cubo perfecto ejemplo

    cubos perfectos: 1,8,27,64 etc...
    ------------ próxima parte ------------
    Se ha borrado un adjunto en formato HTML...
    URL: <http://mail.python.org/pipermail/python-es/attachments/20100316/6f82ab0d/attachment.html>

Related Discussions