我正在尝试生成代码,该代码将首先在函数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"

10-07 21:52