标签:bool math 变量 pre 利用 判断 算法 复杂 double
所谓勾股数,一般是指能够构成直角三角形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);
}
}
标签:bool math 变量 pre 利用 判断 算法 复杂 double
原文地址:https://www.cnblogs.com/Rowry/p/11876017.html