web-dev-qa-db-fra.com

Comment vérifier si un nombre est divisible par un autre nombre (Python)?

Je dois tester si chaque nombre de 1 à 1000 est un multiple de 3 ou un multiple de 5. La façon dont je pensais procéder consisterait à diviser le nombre par 3, et si le résultat est un entier, alors ce serait être un multiple de 3. Pareil avec 5. 

Comment puis-je tester si le nombre est un entier?

voici mon code actuel:

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
78
Taimur

Vous faites cela en utilisant l'opérateur de module, %

n % k == 0

évalue true si et seulement si n est un multiple exact de k. En mathématiques élémentaires, cela s'appelle le reste d'une division.

Dans votre approche actuelle, vous effectuez une division et le résultat sera soit

  • toujours un entier si vous utilisez une division entière, ou
  • toujours un flottant si vous utilisez une division en virgule flottante.

C'est juste la mauvaise façon de tester la divisibilité.

173
David Heffernan

Vous pouvez simplement utiliser l'opérateur % Modulus pour vérifier la divisibilité.
Par exemple: n % 2 == 0 signifie que n est exactement divisible par 2 et n % 2 != 0 signifie que n n’est pas exactement divisible par 2. 

2
Pankaj Prakash

J'ai eu la même approche. Parce que je ne comprenais pas comment utiliser l'opérateur de module (%). 

6% 3 = 0 * Cela signifie que si vous divisez 6 par 3, vous n'aurez pas de reste, 3 est un facteur de 6.  

Maintenant, vous devez le relier à votre problème.

si n% 3 == 0 * Ceci est dit, si mon nombre (n) est divisible par 3 en laissant un 0 restant.  

Ajoutez votre déclaration then (print, return) et continuez votre 

0
brandon gossman

Vous pouvez utiliser% opérateur pour vérifier la divisibilité d'un nombre donné

Le code pour vérifier si donné non. est divisible par 3 ou 5 quand non. moins de 1000 est donné ci-dessous:

n=0
while n<1000:
    if n%3==0 or n%5==0:
        print n,'is multiple of 3 or 5'
    n=n+1
0
Lordferrous

Ce code semble faire ce que vous demandez.

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

Ou quelque chose comme

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

Ou n'importe quel nombre de choses.

0
Bennett Jester