web-dev-qa-db-fra.com

trouver des multiples d'un nombre en Python

J'essaie d'écrire un code qui me permet de trouver les premiers multiples d'un nombre. C'est l'une de mes tentatives:

def printMultiples(n, m):
for m in (n,m):
    print(n, end = ' ')

J'ai compris qu'en mettant for m in (n, m):, il parcourrait la boucle quel que soit le nombre qui était m.

def printMultiples(n, m):
'takes n and m as integers and finds all first m multiples of n'
for m in (n,m):
    if n % 2 == 0:
        while n < 0:
            print(n)

Après plusieurs recherches, je n'ai pu trouver qu'un exemple de code en Java. J'ai donc essayé de le traduire en python, mais je n'ai obtenu aucun résultat. J'ai le sentiment que je devrais utiliser la fonction range() quelque part, mais je ne sais pas où.

6
iKyriaki

Si vous essayez de trouver les premiers multiples count de m, voici ce qui fonctionnerait:

def multiples(m, count):
    for i in range(count):
        print(i*m)

Sinon, vous pouvez le faire avec une plage:

def multiples(m, count):
    for i in range(0,count*m,m):
        print(i)

Notez que ces deux éléments démarrent les multiples à 0 - si vous souhaitez plutôt démarrer à m, vous devez le décaler autant:

range(m,(count+1)*m,m)
4
Amber

Est-ce que ça fait ce que tu veux?

print range(0, (m+1)*n, n)[1:]

Pour m = 5, n = 20

[20, 40, 60, 80, 100]

Ou mieux encore,

>>> print range(n, (m+1)*n, n)
[20, 40, 60, 80, 100] 

Pour Python3 +

>>> print(list(range(n, (m+1)*n, n)))
[20, 40, 60, 80, 100] 
4
sberry

Pour les dix premiers multiples de 5, disons

>>> [5*n for n in range(1,10+1)]
[5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
1
Colonel Panic

Basé sur des concepts mathématiques, je comprends que:

  • tous les nombres naturels qui, divisés par n, ayant 0 comme reste, sont tous des multiples de n

Par conséquent, le calcul suivant s’applique également en tant que solution (multiples compris entre 1 et 100):

>>> multiples_5 = [n for n in range(1, 101) if n % 5 == 0]
>>> multiples_5
[5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]

Pour en savoir plus:

0
ivanleoncz
def multiples(n,m,starting_from=1,increment_by=1):
    """
    # Where n is the number 10 and m is the number 2 from your example. 
    # In case you want to print the multiples starting from some other number other than 1 then you could use the starting_from parameter
    # In case you want to print every 2nd multiple or every 3rd multiple you could change the increment_by 
    """
    print [ n*x for x in range(starting_from,m+1,increment_by) ]