我正在尝试生成代码,首先在函数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"
答案 0 :(得分:5)
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"