zoukankan      html  css  js  c++  java
  • 【笔试】2、勾股数元祖或者素勾股数

    package y2020.interview.huawei.gougushu;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    /**
     * @Auther: xiaof
     * @Date: 2020/3/11 10:25
     * @Description:勾股数元祖 素勾股数的个数
     *
     * 勾股数,是由三个正整数组成的数组;能符合勾股定理 a*a + b*b = c*c ,(a, b, c) 的正整数解。如果 (a, b, c) 是勾股数,
     * 它们的正整数倍数,也是勾股数。如果 (a, b, c) 互质,它们就称为素勾股数。给定正整数N, 计算出小于或等于N的素勾股数个数。
     *
     */
    public class Main {
    
        public static List solution(int n, int m) {
            List res = new ArrayList();
            for (int a = n; a <= m - 2; ++a) {
                for (int b = a + 1; b <= m - 1; ++b) {
                    //求c
                    double c = Math.sqrt(Math.pow(a,2) + Math.pow(b,2));
                    long cz = (long) c;
                    if (c - cz == 0 && c <= m && isPrim(a,b) && isPrim(a, (int) c) && isPrim(b, (int) c)) {
                        res.add(new int[]{a, b, (int) c});
                    } else if (c > m) {
                        break;
                    }
                }
            }
    
            return res;
        }
    
        //判断a,b,c互质
        public static boolean isPrim(int a, int b) {
            if(a < b) {
                int tmp = a;
                a = b;
                b = tmp;
            }
            int c;
            //辗转相除
            while((c = a % b) != 0) {
                a = b;
                b = c;
            }
            return b == 1;
        }
    
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int n = scanner.nextInt();
            int m = scanner.nextInt();
    
            List<int[]> res = solution(n, m);
            res.forEach(res1 -> {
                System.out.println(res1[0] + " " + res1[1] + " " + res1[2]);
            });
    
        }
    }
  • 相关阅读:
    Android一些问题
    内存泄漏(Memory Leak)
    内存溢出OOM
    Android面试题集合
    Handler之同步屏障机制(sync barrier)
    IdleHandler 原理浅析
    OkHttp原理
    RxJava操作符
    Android电量优化全解析
    Android内存优化大盘点
  • 原文地址:https://www.cnblogs.com/cutter-point/p/12467810.html
Copyright © 2011-2022 走看看