程序接受两个整数 (N, X) 并打印出 X 从 1 到 N 的所有倍数。
我的代码:
N, X = [int(val) for val in input().split()]
for ctr in range(X,N+1):
print(ctr, end=" ")
预期输出:
20 2
2 4 6 8 10 12 14 16 18 20
实际输出:
20 2
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
答案 0 :(得分:3)
N, X = [int(val) for val in input().split()]
for ctr in range(X, N+1, X):
print(ctr, end=" ")
将 step 参数添加到 range
函数。
答案 1 :(得分:3)
因为 range(X,N+1)
为您提供了从 X 开始到并包括 N
的所有数字,所以您永远不会过滤掉可被 x
整除的数字。
这是一种通过找到 N / x 的商来生成所有倍数的方法:
>>> def foo(n, x):
... quotient = n // x
... return [i*x for i in range(1, quotient + 1)]
...
>>> foo(20, 2)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
>>> foo(13, 3)
[3, 6, 9, 12]
请注意,Python 的 range
允许您使用 step
参数几乎轻松地做到这一点:
>>> n,x = 20, 2
>>> list(range(x, n+ 1, x))
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
>>> n,x = 13, 3
>>> list(range(x, n+ 1, x))
[3, 6, 9, 12]
答案 2 :(得分:1)
N, X = [int(val) for val in input().split()]
for ctr in range(X,N+1):
if ctr % X == 0:
print(ctr, end=" ")
您可以使用 %(模)运算符。
基本上,当你有X的倍数时,那么ctr除以X的余数等于0。
这就是 % 检查的内容。
答案 3 :(得分:-2)
您正在打印所有数字,但您想要的是 x 的所有倍数:
N, X = [int(val) for val in input().split()]
for ctr in range(1,N+1):
print(X*ctr, end=" ")