You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求编写Python程序:找出指定面积的整数边长矩形与直角三角形并输出周长

解决方案:找出指定面积的整数边长矩形与直角三角形

一、问题拆解

1. 矩形的逻辑

  • 面积公式:S = a * b(a、b为正整数,a ≤ b,避免重复解)
  • 周长公式:周长 = 2*(a + b)
  • 遍历思路:从1到√S遍历a,若S % a == 0,则b = S // a,得到一组有效边长。

2. 直角三角形的逻辑

  • 面积公式:S = (a * b)/2(a、b为直角边,正整数),变形得a*b = 2S
  • 需满足勾股定理:斜边c = √(a² + b²)必须为整数
  • 周长公式:周长 = a + b + c
  • 遍历思路:从1到√(2S)遍历a,若2S % a == 0,则b = (2S) // a,验证a² + b²是否为完全平方数,且a ≤ b。

二、完整代码实现

import math
from tabulate import tabulate

def find_rectangles(target_area):
    rectangles = []
    for a in range(1, int(math.isqrt(target_area)) + 1):
        if target_area % a == 0:
            b = target_area // a
            perimeter = 2 * (a + b)
            rectangles.append(["矩形", f"{a}×{b}", perimeter])
    return rectangles

def find_right_triangles(target_area):
    triangles = []
    double_area = 2 * target_area
    for a in range(1, int(math.isqrt(double_area)) + 1):
        if double_area % a == 0:
            b = double_area // a
            c_squared = a**2 + b**2
            c = math.isqrt(c_squared)
            if c * c == c_squared:
                if a > b:
                    a, b = b, a
                perimeter = a + b + c
                triangles.append(["直角三角形", f"{a}, {b}, {c}", perimeter])
    return triangles

if __name__ == "__main__":
    while True:
        try:
            target_area = int(input("请输入目标面积(正整数):"))
            if target_area <= 0:
                print("请输入正整数!")
                continue
            break
        except ValueError:
            print("输入无效,请输入正整数!")

    rect_results = find_rectangles(target_area)
    tri_results = find_right_triangles(target_area)
    all_results = rect_results + tri_results

    if all_results:
        print("\n符合条件的图形列表:")
        print(tabulate(all_results, headers=["图形类型", "边长", "周长"], tablefmt="grid"))
    else:
        print(f"没有找到面积为{target_area}的整数边长矩形或直角三角形。")

三、代码说明

  1. 依赖安装:代码用到tabulate库格式化表格,执行前先安装:pip install tabulate
  2. 去重处理:矩形和三角形都通过a ≤ b的限制避免重复解(比如2×3和3×2视为同一个矩形)
  3. 输入验证:确保用户输入的是正整数,避免无效值报错
  4. 完全平方数验证:用math.isqrt计算整数平方根,再平方比对,判断斜边是否为整数

四、示例运行

假设输入面积为6:

  • 矩形解:1×6(周长14)、2×3(周长10)
  • 直角三角形解:3,4,5(面积(3×4)/2=6,周长12)
    输出表格会清晰展示这些结果。

内容的提问来源于stack exchange,提问作者조용재

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:32:24