如何检查每个数字而不是一个值?

时间:2018-10-03 21:37:46

标签: python modulus

除数: 对于2到100的数字,请打印一系列线,指示哪些数字是其他数字的除数。对于每一个,打印出“ X除以Y”,其中X <= Y,并且X和Y都在2到100之间。前几行将是: 2分2 3分3 2除4 4分4 5除5 等

到目前为止,我有这个

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 :(得分:1)

这是您的代码的更正版本,较小的y值最多为6。 您可以将其扩展到100。

说明:第一个while循环检查y的值。对于每个y值,您可以使用在x上运行的第二个while循环来检查其除数。您可以在内部x循环中将while更新1,在外部y循环中将while更新1。如果不清楚,请在下面发表评论。

您的代码问题:您仅针对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

答案 1 :(得分:0)

这应该做的工作。尝试一下,如果不清楚,请大声呼喊

p0 = Plot(MyContourSeries(f, (x, -1.5, 1.5), (y, -1.5, 1.5),
                      nb_of_points_x=50, nb_of_points_y=50, levels=np.arange(-50,50)))
p0.show()

输入“ 10”的输出:

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)

答案 2 :(得分:0)

您可以在此处使用 enumerate ,并在每个项目之前遍历索引会产生您想要获得的结果

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