由于3²+4²=5²,所以称‘3,4,5‘为勾股数,求n(包括n)以内所有勾股数数组。
由于3²+4²=5²,所以称'3,4,5'为勾股数,求n(包括n)以内所有勾股数数组。
比如:10以内的勾股数组:['3,4,5','6,7,8']
目录
一、题目分析
我们都学过勾股定理,知道勾股定理需要满足a²+b²=c²,我们可以把等式两边拆开来处理,首先
遍历一次1~n,存储c的平方结果集,然后通过双层for循环计算a²+b²,最后判断a²+b²的和是否在c的平方结果集当中,如果在,就说明,a,b,c满足勾股数关系。
二、程序代码
package com;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
int n = 10;
List<Integer> zList = new ArrayList<>();
for (int i = 1; i <= n; i++) {
zList.add(i * i);
}
List<String> result = new ArrayList<>();
for (int x = 1; x < n; x++) {
for (int y = x; y < n; y++) {
int z = x * x + y * y;
if (zList.contains(z)) {
result.add(String.format("'%d,%d,%d'", x, y, (int) Math.sqrt(z)));
}
}
}
System.out.println(result);
}
}