1.勾股数
如果三个正整数A B C ,A²+B²=C²则为勾股数
如果ABC之间两两互质,即A与B A与C B与C均互质没有公约数,
则称其为勾股数元组。 请求出给定n m 范围内所有的勾股数元组
输入描述: 起始范围 1<n<10000 n<m<10000
输出描述: abc 保证a<b<c 输出格式 a b c
多组勾股数元组 按照a升序b升序 c升序的排序方式输出。给定范围内,找不到勾股数元组时,输出 Na
案例
输入
1
20
输出
3 4 5
5 12 13
8 15 17
输入
5
10
输出
Na
查看代码
import java.util.*;
//勾股数
public class Demo1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
int m = Integer.parseInt(sc.nextLine());
int count = 0;
//暴力求解
for (int a = n; a < m; a++) {
for (int b = n + 1; b < m; b++) {
for (int c = n + 2; c < m; c++) {
if (a * a + b * b == c * c
&& a < b && b < c
&& huZhi(a, b) == 1
&& huZhi(a, c) == 1
&& huZhi(b, c) == 1){
System.out.println(a + " " + b + " " + c);
count++;
}
}
}
}
if(count == 0){
System.out.println("Na");
}
}
//辅助函数,判断两个数是否互质
private static int huZhi(int a, int b) {
if (a == 0 || b == 0) {
return 1;
} else if (a % b == 0) {
return b;
} else {
return huZhi(b, a % b);
}
}
}
总结:
- 设置了一个count标志变量来判断是否存在符合要求的数据。
- 对题目的多种条件,尤其对有序的要求,解决的方式简单的有点意外,可能是之前对多条件无脑恐惧。
- 思维要继续落实好“万岁”策略!