Оператор `%` - PullRequest
       23

Оператор `%`

0 голосов
/ 21 февраля 2009

Я хочу найти все числа, делимые на все числа от 1 до 5. Как мне написать программу, чтобы, если остаток от «начала», деленный на все числа, через которые проходит x, был равен 0, то это начнется печать. Есть ли синтаксис, который вычислит то, что я ищу. спасибо.

математика импорта

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

            start += 1

Ответы [ 2 ]

3 голосов
/ 21 февраля 2009

Прежде всего, вы, кажется, запрашиваете все кратные 60. Они могут быть легко воспроизведены следующим образом (будьте осторожны, это бесконечный цикл):

from itertools import count

for i in count():
    print i*60

Если вы просто упростили свой пример, это более питонное (и правильное) решение того, что вы написали (снова бесконечный цикл):

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

У вас была серьезная ошибка в исходном коде: range(1,5) равно [1, 2, 3, 4], поэтому он не будет проверять, делится ли число на 5!

PS: Вы уже использовали эту безумную one = 1 конструкцию, и мы показали вам, как лучше ее кодировать. Пожалуйста, учитесь на наших ответах!

0 голосов
/ 21 февраля 2009

если я правильно понял, вы хотите что-то вроде этого:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...