第1个回答 2023-10-11
先明白一件事情,勾股数一定满足三角形的定理,两边之和大于第三边,两边只差小于第三边,所以就可以转换成一百以内的整数有多少组勾股数。
如果计算能力允许的话,可以直接瞪眼法,从一到一百直接开始算,但是很明显这是不现实的。
可以使用取巧的方法,找出3,4,5这种组合,分组寻找类似的勾股数组合,但是这种方法很容易漏算,因为不清楚到底有多少。
第三种的话,可以借助计算机,直接编程实现,最简单的则是暴力枚举,直接进行三重循环,或者优化一下,就能很快的出结果。
一百以内的所有解法如下,代码在末尾:
3 4 5 5 12 13 6 8 10 7 24 25
8 15 17 9 12 15 9 40 41 10 24 26
11 60 61 12 16 20 12 35 37 13 84 85
14 48 50 15 36 39 16 30 34 16 63 65
18 24 30 18 80 82 20 21 29 20 48 52
21 28 35 21 72 75 24 32 40 24 45 51
24 70 74 27 36 45 28 45 53 30 72 78
32 60 68 33 44 55 35 84 91 36 48 60
39 80 89 40 42 58 42 56 70 48 55 73
48 64 80 54 72 90 57 76 95 60 63 87
65 72 97
一共41组,
代码如下所示
import java.util.ArrayList;
public class Triangle
{
public static void main(String[] args) {
ifTriangle(100);
}
public static void ifTriangle(int n){
int m=0;
int type=0;
ArrayList<Integer> a=new ArrayList<>();
a.add(1);
for(int i=2;i<n;i++){
for(int j=2;j<n;j++){
m=(int)Math.sqrt(i*i+j*j);
if(m<n&&m*m==i*i+j*j){
if(a.contains(m))continue;
a.add(m);
type++;
System.out.print(i+"\t"+j+"\t"+m+"\t"+"\t");
if(type%4==0) System.out.println();
}
}
}
}
}