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>.