为什么模数计算会被列表记住?鼠尾草,Python

2024-05-08 02:33:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在sageMath工作表中有这样一个列表

v = [3, 5, 22, 35, 230, 308, 683, 6546]
m = 14002
a = 185

然后我对列表中的每个数字进行模数计算

for i in range(0, len(v)):
    v[i] = mod(v[i] * a, m)

我的问题是,当我以后想用这个列表进行其他计算时,mod()函数仍然被列表记住。我试着把这个单子复制到另一个单子上,它不起作用

例如,下面的循环返回6714,但应该返回2071620716 % 14002 = 6714

for i in range(len(v)):
    c = c + v[i]

我解决了这个问题,做了一个更多的模计算v喜欢

for i in range(len(v)):
    v[i] = mod(v[i], next_prime(m*m))

我的问题是有没有更好的办法来解决这个问题


Tags: 函数inmod列表forlenrange数字
1条回答
网友
1楼 · 发布于 2024-05-08 02:33:39

我现在明白你的问题了。当您使用mod()时,它会自动生成整数的元素,而不仅仅是任何旧整数。所以你永远无法摆脱。如果您真正想要剩下的部分,可以使用内置的Python %

v = [3, 5, 22, 35, 230, 308, 683, 6546]
m = 14002
a = 185
for i in range(0, len(v)):
    v[i] = v[i] * a % m

for i in range(len(v)):
    print v[i]*m

它产生一个以7771110开头的列表。类型仍然(正确地)是sage.rings.integer.Integer

相关问题 更多 >