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标志变量来判断是否存在符合要求的数据。
  • 对题目的多种条件,尤其对有序的要求,解决的方式简单的有点意外,可能是之前对多条件无脑恐惧。
  • 思维要继续落实好“万岁”策略!
posted @ 2022-03-23 20:37  Jukim  阅读(1015)  评论(0编辑  收藏  举报