Determinar todos los múltiplos de un número en Python

publicado por: Anonymous

Empiezo en la programación con Python hace solo unos días y pues quiero desarrollar un programa para un problema sencillo. Básicamente debo leer un número de tres dígitos y determinar qué dígitos son múltiplos de otros dígitos, actualmente tengo desarrollado ya un programa y realiza todo como se le ordena, pero solo puede mostrar si uno de los dígitos es múltiplo de otro, pero no todos los dígitos múltiplos de otros.
Así, por ejemplo, si ingreso el 248 según el código me dirá que el 8 es múltiplo de 4 y finalizará, pero el 8 también es múltiplo de 2 y esto no lo imprimirá. ¿Hay algún modo de poder imprimir todos los posibles múltiplos que los dígitos puedan tener?
Otra cosa es que en el ejercicio no se me permite usar estructuras de ciclos o listas, si se puede realizar sin utilizar estas estructuras estaría agradecido, pero igual no hay problema si es necesario utilizarlas.

_x000D_

_x000D_

from math import log10_x000D_
from math import ceil_x000D_
Num=abs(int(input('Digite un número entero de tres dígitos')))_x000D_
if Num==0 or Num==1:_x000D_
    print('El número ingresado no tiene tres dígitos a')_x000D_
else:_x000D_
    Num_Dig=ceil(log10(Num))_x000D_
    if Num_Dig!=3:  _x000D_
        print('El número ingresado no tiene tres dígitos a')_x000D_
    else:_x000D_
        Dig_1=Num%10_x000D_
        Dig_2=(Num%100)//10_x000D_
        Dig_3=(Num//100)_x000D_
        if Dig_1%Dig_2==0:_x000D_
            print(f'El dígito {Dig_1} es multiplo de {Dig_2}')_x000D_
        elif Dig_1%Dig_3==0:_x000D_
            print(f'El dígito {Dig_1} es multiplo de {Dig_3}')_x000D_
        elif Dig_2%Dig_1==0:_x000D_
            print(f'El dígito {Dig_2} es multiplo de {Dig_1}')_x000D_
        elif Dig_2%Dig_3==0:_x000D_
            print(f'El dígito {Dig_2} es multiplo de {Dig_3}')_x000D_
        elif Dig_3%Dig_1==0:_x000D_
            print(f'El dígito {Dig_3} es multiplo de {Dig_1}')_x000D_
        else:_x000D_
            print(f'Ningún dígito en el número {Num} es multiplo de otro')

_x000D_

_x000D_

_x000D_

solución

Tienes un problema en la lógica de tu código, ya que estas realizando comprobaciones excluyentes,es decir, al utiliza elif si alguna de las comprobaciones es cierta no realizará las demás. Lo que debes hacer es realizar todas las comprobaciones una tras otra ya que no puedes usar bucles ni listas.

Te dejo un ejemplo funcionando:

from math import log10
from math import ceil
Num=abs(int(input('Digite un número entero de tres dígitos')))
if Num==0 or Num==1:
    print('El número ingresado no tiene tres dígitos a')
else:
    Num_Dig=ceil(log10(Num))
    if Num_Dig!=3:  
        print('El número ingresado no tiene tres dígitos a')
    else:
        Dig_1=Num%10
        Dig_2=(Num%100)//10
        Dig_3=(Num//100)
        ninguno = True
        if Dig_1%Dig_2==0:
            print(f'El dígito {Dig_1} es multiplo de {Dig_2}')
            ninguno = False
        if Dig_1%Dig_3==0:
            print(f'El dígito {Dig_1} es multiplo de {Dig_3}')
            ninguno = False
        if Dig_2%Dig_1==0:
            print(f'El dígito {Dig_2} es multiplo de {Dig_1}')
            ninguno = False
        if Dig_2%Dig_3==0:
            print(f'El dígito {Dig_2} es multiplo de {Dig_3}')
            ninguno = False
        if Dig_3%Dig_1==0:
            print(f'El dígito {Dig_3} es multiplo de {Dig_1}')
            ninguno = False
        if ninguno:
            print(f'Ningún dígito en el número {Num} es multiplo de otro')

Espero que te sirva, cualquier duda pregunta en los comentarios.

Un saludo

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *