我需要关于以下练习题的快速提示:
“不超过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 <= n
和 a^2 + b^2 = c^2
。
关于algorithm - 毕达哥拉斯三元组练习,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3976466/