我在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
,但应该返回20716
和
20716 % 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))
我的问题是有没有更好的办法来解决这个问题
我现在明白你的问题了。当您使用
mod()
时,它会自动生成整数的元素,而不仅仅是任何旧整数。所以你永远无法摆脱。如果您真正想要剩下的部分,可以使用内置的Python%
:它产生一个以
7771110
开头的列表。类型仍然(正确地)是sage.rings.integer.Integer
相关问题 更多 >
编程相关推荐