2009-02-20 5 views
0

Je veux trouver tous les nombres divisibles par tous les nombres entre 1 et 5. comment j'écris le programme de sorte que si le reste de 'start' divisé par tous les nombres que x traverse est égal à 0 qu'il va imprimer le début. Y a-t-il une syntaxe qui calcule ce que je cherche? Merci.L'opérateur `%`

math import

def main(): 
    one = 1 
    start = 1 
    while one == 1: 
     for x in range(1, 5): 
      if start % x == 0: 
       print start 

      start += 1 
+0

est-ce votre vrai problème? Cherchez-vous vraiment tous les multiples de 60? – hop

+0

presque exactement le même code a été posté http://stackoverflow.com/questions/567222/simple-prime-generator-in-python et qu'est-ce que «Existe-t-il une syntaxe qui va calculer ce que je cherche» censé signifier ? – SilentGhost

+0

Tout d'abord, "True:" est beaucoup plus concis. Deuxièmement, le code actuel semble brisé; pour les itérations, x augmente de 1 à 4 et le début augmente de 1 à 4, mais simultanément. Vous voulez boucler indépendamment pour chacun d'eux. –

Répondre

0

si je comprends bien, vous voulez quelque chose comme ceci:

start = 1 
while (True): 
    flgEvenlyDiv = True 
    for x in range(1, 5): 
      if (start % x != 0): 
        flgEvenlyDiv = False 
        break 

    if (flgEvenlyDiv == True): 
        print start 
    start += 1 
3

Tout d'abord, vous semblez demander tous les multiples de 60. Ceux-ci peuvent être rendus facilement comme ceci (attention, il s'agit d'une boucle infinie):

from itertools import count 

for i in count(): 
    print i*60 

Si vous avez trop simplifié votre exemple, ceci est un plus pythonique (et correcte) solution de ce que vous avez écrit (à nouveau une boucle infinie):

from itertools import count 

# put any test you like in this function 
def test(number): 
    return all((number % i) == 0 for i in range(1,6)) 

my_numbers = (number for number in count() if test(number)) 

for number in my_numbers: 
    print number 

Vous avez eu un bug tombe dans votre code d'origine: range(1,5) égal [1, 2, 3, 4], donc il ne serait pas tester si un nombre est divisble par 5! PS: Vous avez déjà utilisé cette construction folle one = 1, et nous vous montrons comment mieux coder cela. S'il vous plaît apprendre de nos réponses!