如果没有numpy,我就无法在Python中执行数量不确定的多项式乘法



我想计算一个在列表中的点上消失的多项式的系数,例如,下面的代码有三个根,1、2和3。不知道这些分量有多少根,所以我需要获得它们的最终系数。

from collections import defaultdict
mult = defaultdict(int)
a=[1, 2, 3]
def loop_rec(a, n, item1, item2):
if n > 0:
for i1, c1 in zip([1,0], [1, -a[n]]):
for i2, c2 in zip(item1, item2):
mult[i1 + i2] += c1 * c2
mult_sorted = tuple(sorted(mult.items(), reverse=True))
item1 = [item[0] for item in mult_sorted]
item2 = [item[1] for item in mult_sorted]
a=a[:n]
loop_rec(a, n - 1, item1, item2)
else:
return (item1,item2)
(a,b)=loop_rec(a,len(a)-1,[0],[1])
[out]: cannot unpack non-iterable NoneType object

我找到了解决方案。

from collections import defaultdict
mult = defaultdict(int)
a=[1, 2, 3]
def loop_rec(a, n, item1, item2):
if n >= 0:
mult = defaultdict(int)
for i1, c1 in zip([1,0], [1, a[n]]):
for i2, c2 in zip(item1, item2):
mult[i1 + i2] += c1 * c2
mult_sorted = tuple(sorted(mult.items(), reverse=True))
item1 = [item[0] for item in mult_sorted]
item2 = [item[1] for item in mult_sorted]
a=a[:n]
return loop_rec(a, n - 1, item1, item2)
else:
return (item1,item2)
(a,b)=loop_rec(a,len(a)-1,[0],[1])
print(a)
print(b)

你可以从没有NumPy的列表中计算在根上消失的乘法多项式,它在密码学领域非常有用,只要我们有字段元素,并且需要一个列表作为结果,而不是在NumPy类中。

[out]: 
[3, 2, 1, 0]
[1, 6, 11, 6]

相关内容

最新更新