蟒蛇中高斯消除的实现

时间:2017-01-23 12:53:58

标签: python algorithm matrix linear-algebra

我一直在努力实现this quadratic sieve factoring algorithm的变体。在我的代码中,我暂时跳过筛选步骤,只是在我的代码中执行蛮力以查找199个平滑数字。无论我在一个部分中遇到什么困难,我写了this python code

def fact(n):
    primes,m,p = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199],[0 for i in range(46)],0
    while True:   
        if (n/(int(primes[p]))) == 1:
            m[p] = int(m[p])+1
            break
        elif (n/(int(primes[p])))%1 == 0:
            m[p] = int(m[p])+1
            n = (n/(int(primes[p])))
        elif p == 45:
            break
        else:
            p+=1
    return m

def transpose_mod2(m):
    u=[]
    for q in range(len(m[0])):
        u.append([])
    for j in range(len(u)):
        for q in range(len(m)):
            u[j].append(0)  

    for a in range(len(m)):
        for o in range(len(m[a])):
            u[o][a] = m[a][o]%2

    return u               

def inff(n,am,ax):
    g,num = [],[]
    for a in range(am,ax):
        ftt = fact(((a*a)-n))
        if ftt != None:
            num.append((a*a)-n)
            g.append(ftt)
    return transpose_mod2(g),num

a,b=inff(123,25,99) #(multiple of the primes, min a, max a)

print(a)

我的代码实现了构造大矩阵的算法。当试图实现该算法时,我陷入了对大矩阵的高斯消除中,这标识了另一个矩阵,这样如果我将原始的较大矩阵乘以,我将得到一个空矩阵。

所以,我想请求帮助实现高斯消除的最佳方法,对于python中的这样一个大矩阵。

PS。我是一名缺乏编程知识的高中生,所以请原谅我的错误代码。

0 个答案:

没有答案