如果三個正整數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標志變量來判斷是否存在符合要求的數據。
- 對題目的多種條件,尤其對有序的要求,解決的方式簡單的有點意外,可能是之前對多條件無腦恐懼。
- 思維要繼續落實好“萬歲”策略!