完美长方体


完美长方体,又称完美盒,指任意两顶点之间的距离(即棱长、面对角线和体对角线)都是整数的长方体。

即,整数a、b、c、d、e、f、g(a、b、c是棱长,d、e、f是面对角线长,g是体对角线长)同时满足以下4个等式:

那么,完美长方体存在吗?如果存在,请指出该棱长、面对角线和体对角线。

截至2015年5月,还没有找到任何完美长方体,亦未有人证明完美长方体不存在。经由电脑搜寻显示,若存在完美长方体,其中一个边长需大于3*10^12,且最小边长需大于1010。

现时只找到一些接近完美盒,例如其中一边是无理数,其他边和对角线均为整数的例子,如:棱长分别为672、153与104,其面对角线分别为3√(52777)、680与185,体对角线为697。

以下是一个用Python寻找“完美长方体”的例子。

import math

def gcd(a, b):
    # 求最大公约数
    while b:
        a, b = b, a % b
    return a

def is_perfect_rectangular_prism(a, b, c):
    # 检查是否为部分完美长方体(边长和面对角线为整数)
    diagonal_ab = math.isqrt(a ** 2 + b ** 2)
    diagonal_ac = math.isqrt(a ** 2 + c ** 2)
    diagonal_bc = math.isqrt(b ** 2 + c ** 2)

    # 确保对角线也是整数,并且实际计算符合勾股定理
    if diagonal_ab ** 2 == a ** 2 + b ** 2 and \
       diagonal_ac ** 2 == a ** 2 + c ** 2 and \
       diagonal_bc ** 2 == b ** 2 + c ** 2:
        return True
    return False

def find_perfect_rectangular_prism(limit):
    for a in range(1, limit):
        for b in range(a, limit):
            for c in range(b, limit):
                if is_perfect_rectangular_prism(a, b, c):
                    print(f"找到部分完美长方体:边长 ({a}, {b}, {c})")

# 设置搜索的边长范围
find_perfect_rectangular_prism(100)

此代码会寻找边长和面对角线为整数的部分完美长方体。如果要寻找完全满足空间对角线也是整数的完美长方体,还需要添加空间对角线的检查,算法会更复杂。

运行结果为满足条件的长方体边长。

各位可以用配置好点的电脑运行一下。

声明:梅之夏 - blog.mcenahle.sh.cn|如未注明,均为原创

本网站采用CC BY-SA 4.0协议进行授权

转载:转载请注明原文链接 - 完美长方体


Explore. Dream. Discover.