我需要关于以下练习题的快速提示:



“不超过n”是什么意思?

练习来源:Java by Dissection(Ira Pohl 和 Charlie McDowell)

注意:我发现看起来非常好的 post on pythagorean triples 但我还不会阅读它,因为它可能会破坏我自己解决这个问题的尝试......

编辑

如果 n 是小边 a 的长度,我们说: n 是 5;
然后我需要用 a=1,a=2,a=3,a=4,a=5 检查所有三元组
并找出勾股三元组的情况

这个额外条件有什么用?

编辑 2

如果我给你看一个实用的片段,也许我会更接近......所以这是一小段(python)代码,返回几个三元组。我已将外循环的上限设置为 20(目前我看不到 'n' 的任何其他用途)以使其可管理用于帖子。

import math
for b in range(20):
    for a in range(1, b):
        c = math.sqrt( a * a + b * b)
        if c % 1 == 0:
            print (a, b, int(c))

这返回

(3, 4, 5)
(6, 8, 10)
(5, 12, 13)
(9, 12, 15)
(8, 15, 17)
(12, 16, 20)

这是所需的输出吗?我缺少的步骤是什么?

提前致谢

巴巴

最佳答案

勾股三元组是直角三角形的整数边。三角形的小边是形成直角的边(不是斜边)。
no larger than n 意味着你得到一个整数 n 并且必须生成所有可能的整数三元组 a b c 使得 a <= n, b <= na^2 + b^2 = c^2

关于algorithm - 毕达哥拉斯三元组练习,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3976466/

10-13 01:08