编程语言
首页 > 编程语言> > [算法]勾股数

[算法]勾股数

作者:互联网

勾股数

问题描述

所谓勾股数,一般是指能够构成直角三角形3条边的3个正整数(a,b,c)
即 a^2 + b^2 = c^2 (a,b,c) => 为自然数
求1000以内的勾股数

算法思路

代码示例

Python

# 求1000以内的勾股数
import math


def fn(num):
    """求num之内的勾股数"""
    for a in range(1, num):
        # 这里b从 a+1开始是为了避免重复
        for b in range(a+1, num):
            c = math.sqrt(a ** 2 + b ** 2)
            if c.is_integer() and c < num:
                print("a:%s,b:%s,c:%d" % (a,b,c))

fn(1000)

Java


public class 勾股数 {

    static boolean isInteger(double num) {
        return (int) num == num;
    }

    // 找出num之内的勾股数
    static void fn(int num) {
        for (int a = 1; a < num; a++)
            for (int b = a + 1; b < num; b++) {
                double c = Math.sqrt(a * a + b * b);
                if (isInteger(c) && c < num) {
                    System.out.printf("a:%d,b:%d,c:%d \n", a, b, (int)c);
                }
            }
    }

    public static void main(String[] args) {
        fn(1000);
    }

}

标签:int,sqrt,股数,算法,num,fn,1000
来源: https://www.cnblogs.com/Rowry/p/11876017.html