使用列表查找解决方案

Use*_*own 1 python list

我正在尝试生成一些代码,它首先会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"
Run Code Online (Sandbox Code Playgroud)

Tes*_*ler 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"
Run Code Online (Sandbox Code Playgroud)