蛮力的Diophatine方程解

时间:2019-01-27 16:58:01

标签: python math discrete-mathematics

我一般是python和编程新手。 所以,前几天我偶然发现了欧拉的方程 不存在a,b,c,d全部为满足a ^ 4 + b ^ 4 + c ^ 4 = d ^ 4的等式的正整数。后来证明他错了,有解决办法。

目标:找到3个满足方程a ^ 4 + b ^ 4 + c ^ 4 = d ^ 4的整数,其中a,b,c,d均为正整数。

我对此的最初反应是用蛮力遍历它,迭代a,b和c,看看{数字的和加到4的平方和平方根两次}是否为整数。类似于if math.sqrt(math.sqrt(a**4+b**4+c**4))%1==0的东西,但是发现math.sqrt()不会输出那么多的小数<-,因为要使用的小数很多。尝试使用Decimals()将数字强制转换为浮点数,但两者似乎都无效。我还使用了abs(k-int(k))== 0来查找它是否具有小数位,但这似乎也不起作用。

因此,我决定不使用math.sqrt(),而是尝试迭代另一个变量,看看它是否等于4 abc的幂的乘积。

t = False  

此功能用于检查目标是否具有4的幂的整数

def transform(target, starter):  
    i = starter
    check = False
    while target != i**4:
        if target > i**4:
            i+=1
        elif target < i**4:
            if check:
                return False
            else:
                i-=1
                check = True
        elif target == i**4:
            return True
    return True  

主驱动程序

print ("Start")  
for i in range(1,1000000):
    for j in range(i,1000000):
        for k in range(j, 1000000):
            if transform(i**4+j**4+k**4,k):
                print ("Answer:", i, j, k)
                t = True
            if i % 10000 == 0 and j % 10000 == 0 and k % 10000 == 0:
                print ("Progress:",i,j,k,) 
        if t:
            break
    if t:
        break  

但是,当我尝试此操作时,它似乎陷入了无限循环或某种状态,因为我的笔记本电脑迷们在搅拌,并且它刚刚停止工作。 希望有人能告诉我da wae

https://en.wikipedia.org/wiki/Diophantine_equation

0 个答案:

没有答案
相关问题