Je dois tester si chaque nombre de 1 à 1000 est un multiple de 3 ou un multiple de 5.
J'ai essayé ce code en Python 2.x:
n = 0
s = 0
while (n < 1001):
x = n/3
if isinstance(x, (int, long)):
print 'Multiple of 3!'
s = s + n
if False:
y = n/5
if isinstance(y, (int, long)):
s = s + n
print 'Number: '
print n
print 'Sum:'
print s
n = n + 1
L'idée est d'essayer de diviser le nombre et de voir si le résultat est un entier. Cependant, je n'obtiens pas le résultat attendu.
Comment puis-je tester si le nombre est un entier?
En 2.x, une division comme celle-ci produira un entier, en ignorant le reste; voir <a href="https://stackoverflow.com/questions/1267869">Comment puis-je forcer la division en point flottant ? La division continue d'arrondir à 0 ?</a> pour plus de détails.
En 3.x, la division produira une valeur en point flottant; le résultat <strong>n'est pas</strong> "un entier" <em>même s'il s'agit d'un nombre entier</em>, donc le test <code>isinstance</code> échouera. Voir <a href="https://stackoverflow.com/questions/1282945">Pourquoi la division entière donne un flottant au lieu d'un autre entier ?</a> pour plus de détails.
Si vous avez besoin du reste de la division entière plutôt que simplement tester la divisibilité, voir <a href="https://stackoverflow.com/questions/5584586">Trouver le reste de la division d'un nombre</a>.
2 votes
En Python 2.x, la division d'entiers donne toujours un entier.
22 votes
Vous devriez imprimer "Fizz" et "Buzz"
12 votes
Problème 1 du Projet Euler ?