C# 确定两个模模式会聚的所有点

C# 确定两个模模式会聚的所有点,c#,python,mathematical-optimization,C#,Python,Mathematical Optimization,这可能更像是一个数学问题,但我正试图用Python和/或C#/Java(脚本)以尽可能最有效的方式来解决这个问题 存在从1到n的单个数据系列,其增量为1: 1,2,3,4,5,6,7,8,9,10......n 还有两个整数变量:x和y 对于数据系列中的每个值,计算n%x和n%y的值 例如: let x = 1, y = 3 n n % x n % y ---- ----- ----- 1 0

这可能更像是一个数学问题,但我正试图用Python和/或C#/Java(脚本)以尽可能最有效的方式来解决这个问题

存在从1到n的单个数据系列,其增量为1:

1,2,3,4,5,6,7,8,9,10......n
还有两个整数变量:x和y

对于数据系列中的每个值,计算n%x和n%y的值

例如:

let x = 1,  y = 3

n           n % x       n % y
----        -----       -----
1             0           1
2             0           2
3             0           0
4             0           1
5             0           2
6             0           0
...
问题:返回序列
n
的数据值列表,该序列将同时返回
n%x
n%y
0值


在上面的示例中,列表将是[1,6,9,12…等]

如果没有其余的代码,我很难给出解决方案,因此下面是普遍的答案:


在程序开始时,创建一个空列表,其中包含
零=[]
。之后,在循环的每个步骤中,让
n
增加,检查
n%x==0和n%y==0
。如果返回
True
,则将当前的
n
添加到带有
零的列表中。附加(n)

您可以这样引用代码

def function(n, x, y):
    result_list = [1]
    for i_n in range(1, n):
        if ((i_n % x) == 0) and ((i_n % y) == 0):
            result_list.append(i_n)
    return result_list

print(function(50, 1, 3))
在代码处,使用
n
50
例如,您可以根据需要进行更改

代码输出为

[1, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48]

3属于输出,1不属于输出。搜索“最小公倍数”好的,我希望有一些神奇的数学公式可以做到这一点,这样我就不必使用循环(这是一个高速应用程序),但这个解决方案效果很好。非常感谢。