Как проверить каждое число вместо одного значения? - PullRequest
0 голосов
/ 04 октября 2018

Делители: для чисел от 2 до 100 выведите ряд строк, указывающих, какие числа являются делителями других чисел.Для каждого выведите «X делит Y», где X <= Y, а X и Y находятся в диапазоне от 2 до 100. Первые несколько строк: 2 делит 2 3 делит 3 2 делит 4 4 делит 4 5 делит 5и т.д. </p>

Пока у меня есть это

x = 2
y = 2
while y <= 100:
      while y <= 100:
            if y % x == 0:
                print(x, 'divides', y)
                y += 1
            elif y % x != 0:
                y += 1

Я не уверен, как заставить это проверить другие значения x и y

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Это должно сделать работу.Попробуйте, если что-то неясно, дайте мне крик

x = int(input("Give the range you want to check numbers in: "))

for number in range(1,x):
    for value in range(1,number+1):
        if number % value == 0:
            print(number, " is divided by", value)

Выход для ввода "10":

1  is divided by 1
2  is divided by 1
2  is divided by 2
3  is divided by 1
3  is divided by 3
4  is divided by 1
4  is divided by 2
4  is divided by 4
5  is divided by 1
5  is divided by 5
6  is divided by 1
6  is divided by 2
6  is divided by 3
6  is divided by 6
7  is divided by 1
7  is divided by 7
8  is divided by 1
8  is divided by 2
8  is divided by 4
8  is divided by 8
9  is divided by 1
9  is divided by 3
9  is divided by 9
0 голосов
/ 04 октября 2018

Здесь вы можете использовать перечисление , и циклическое переключение индексов перед каждым элементом приведет к результатам, которые вы пытаетесь получить

x = [*range(2, 101)]
for idx, item in enumerate(x):
    for i in x[:idx +1]:
        if not item % i:
            print('{} divides {}'.format(i, item))
2 divides 2
3 divides 3
2 divides 4
4 divides 4
5 divides 5
2 divides 6
3 divides 6
6 divides 6
...
99 divides 99
2 divides 100
4 divides 100
5 divides 100
10 divides 100
20 divides 100
25 divides 100
50 divides 100
100 divides 100
0 голосов
/ 04 октября 2018

Вот исправленная версия вашего кода для меньшего значения от y до 6. Вы можете расширить его до 100.

Объяснение : Первый цикл проверки дляy значение.Для каждого значения y вы проверяете его делители, используя второй цикл while, который работает над x.Вы обновляете x на 1 во внутреннем цикле while и обновляете y на 1 во внешнем цикле while.Если что-то неясно, прокомментируйте ниже.

Проблемы с вашим кодом : Вы использовали два цикла while только для y, один из которых был избыточным.Более того, вы не увеличивали x, как вы четко указали в своем вопросе.Ваш elif также не был необходим, потому что вы увеличивали y в обоих случаях.

y = 2
while y <= 6: # Replace 6 by 100 here
    x = 2 # Reset x to 2 for every y value because you count divisors from 2
    while x <= y:
        if y % x == 0:
            print(x, 'divides', y)
        x += 1  
    y += 1    

Выход

2 divides 2
3 divides 3
2 divides 4
4 divides 4
5 divides 5
2 divides 6
3 divides 6
6 divides 6
...