X 从 1 到 N 的倍数

时间:2021-01-04 18:09:56

标签: python python-3.x interpreter

程序接受两个整数 (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

4 个答案:

答案 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=" ")