129 votos

¿Cómo se verifica si un número es divisible por otro número?

Necesito probar si cada número del 1 al 1000 es múltiplo de 3 o múltiplo de 5.

Intenté este código en Python 2.x:

n = 0
s = 0

while (n < 1001):
    x = n/3
    if isinstance(x, (int, long)):
        print '¡Múltiplo de 3!'
        s = s + n
    if False:
        y = n/5
        if isinstance(y, (int, long)):
            s = s + n

    print 'Número: '
    print n
    print 'Suma:'
    print s
    n = n + 1

La idea es intentar dividir el número y ver si el resultado es un número entero. Sin embargo, no estoy obteniendo el resultado esperado.

¿Cómo puedo probar si el número es un entero?


En 2.x, la división de esta manera producirá un entero, descartando el resto; consulta <a href="https://stackoverflow.com/questions/1267869">¿Cómo puedo forzar que la división sea de punto flotante? La división sigue redondeando hacia abajo a 0?</a> para más detalles.

En 3.x, la división producirá un valor de punto flotante; el resultado <strong>no es</strong> "un entero" <em>incluso si es un número entero</em>, por lo que la comprobación de <code>isinstance</code> fallará. Consulta <a href="https://stackoverflow.com/questions/1282945">¿Por qué la división de enteros produce un flotante en lugar de otro entero?</a> para más detalles.

Si necesitas el resto de la división entera en lugar de solo comprobar si es divisible, consulta <a href="https://stackoverflow.com/questions/5584586">Encuentra el resto de la división de un número</a>.

260voto

David Heffernan Puntos 292687

Esto se hace usando el operador módulo, %

n % k == 0

evalúa como verdadero si y solo si n es un múltiplo exacto de k. En matemáticas elementales, esto se conoce como el residuo de una división.

En tu enfoque actual realizas una división y el resultado será

  • siempre un entero si usas división entera, o
  • siempre un flotante si usas división de punto flotante.

Simplemente es la forma incorrecta de probar la divisibilidad.

10voto

Pankaj Prakash Puntos 1706

Simplemente puedes usar el operador % Módulo para comprobar la divisibilidad.
Por ejemplo: n % 2 == 0 significa que n es exactamente divisible por 2 y n % 2 != 0 significa que n no es exactamente divisible por 2.

1voto

Bennett Jester Puntos 11

Este código parece hacer lo que estás pidiendo.

for value in range(1,1000):
    if value % 3 == 0 or value % 5 == 0:
        print(value)

O algo así

for value in range(1,1000):
    if value % 3 == 0 or value % 5 == 0:
        some_list.append(value)

O cualquier otra cosa.

1voto

brandon gossman Puntos 11

Yo tenía el mismo enfoque. Porque no entendía cómo usar el operador de módulo (%).

6 % 3 = 0 *Esto significa que si divides 6 por 3 no tendrás un resto, 3 es un factor de 6.

Ahora tienes que relacionarlo con tu problema dado.

if n % 3 == 0 *Esto significa, si mi número (n) es divisible por 3 dejando un resto de 0.

Agrega tu declaración entonces (print, return) y continúa con tu

0voto

Lordferrous Puntos 618

Puedes usar el operador % para verificar la divisibilidad de un número dado

El código para verificar si el número dado es divisible por 3 o 5 cuando se da un número menor a 1000 se muestra a continuación:

n=0
while n<1000:
    if n%3==0 or n%5==0:
        print n,'es múltiplo de 3 o 5'
    n=n+1

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X