使用列表查找解决方案

时间:2015-09-22 01:37:30

标签: 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"

1 个答案:

答案 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"