在 Z 模 12 中使用加法,(也称为整数模 12,也称为 0 到 11):
1 generates [0,1,2,3,4,5,6,7,8,9,10,11]
(从 0 开始,重复加 1;11+1 使我们回到 0)
同理:
2 generates [0,2,4,6,8,10]
3 generates [0 3 6 9]
9 generates [0,9,6,3] <-- notice order is important
如何在给定特定生成器的情况下创建子组?
最佳答案
我假设您指的是加法子群 Z * g
,其中 Z 是整数集。如果你想要精确的顺序,只需计算它:
def subgroup(n, g):
x = 0
while True:
yield x
x = (x + g) % n
if x == 0:
break
当然,如果顺序不重要,g
导出的子群是
{ G * k for k in xrange((n - 1) // G + 1) }
对于 G = gcd(g, n)
。
关于python - 在 Python 中,从生成器构造循环子群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24063363/