我正在尝试生成代码,该代码将首先在函数modulos p
中找到perfectsq(p)
下的所有理想平方。
有了那个完美的正方形列表。我想找到方程式y^2=x^3+Ax+B
的所有解。我通过使用perfectsq(p)
中的列表来检查m=x^3+Ax+B
在该列表中来完成此操作。有人可以告诉我为什么不编译此代码吗?
def perfectsq(p):
x=[]
for i in range(1,p):
m=(i**2)%p
x.extend(m)
i+=1
def ellipticpt(a, b, p):
x=perfectsq(p)
if 4*(a**3)+27*(b**2) != 0:
for i in range(0,p):
m=(i**3+a*i+b)%p
if m in x:
i=x.index(m)+1
print (m,i)
i+=1
else:
i+=1
else:
print "Error"
最佳答案
perfectsq x.extend(m)TypeError:“ int”对象不可迭代
您不能.extend()
具有单个数字参数的列表,它是用于扩展具有另一个列表的列表。使用.append()
添加到列表的末尾。
另外perfectsq()不返回任何内容
尝试:
def perfectsq(p):
x=[]
for i in range(1,p):
m=(i**2)%p
x.append(m)
i+=1
return x
def ellipticpt(a, b, p):
x=perfectsq(p)
if 4*(a**3)+27*(b**2) != 0:
for i in range(0,p):
m=(i**3+a*i+b)%p
if m in x:
i=x.index(m)+1
print (m,i)
i+=1
else:
i+=1
else:
print "Error"