如果三个正整数A、B、C ,A²+B²=C²则为勾股数
如果ABC之间两两互质,即A与B,A与C,B与C均互质没有公约数,
则称其为勾股数元组。
请求出给定n~m范围内所有的勾股数元组式
输入 1
20
输出 3 4 5
5 12 13
8 15 17
function resolve(n = 1, m = 20) {
let start = n > 3 ? n : 3;
let res = [];
for (let i = start; i <= m; i++) {
for (let j = i + 1; j <= m; j++) {
let sum = Math.sqrt(i * i + j * j);
if (sum <= m && String(sum).indexOf(".") == -1) {
res.push([i, j, sum]);
}
}
}
let col = [];
for (let i = 0; i < res.length; i++) {
console.log(res[i]);
let a = isZhi(res[i][1], res[i][0]);
let b = isZhi(res[i][2], res[i][0]);
let c = isZhi(res[i][2], res[i][1]);
console.log(a, b, c);
if (a && b && c) {
console.log(res[i]);
col.push(res[i]);
}
}
if(col.length === 0){
console.log("NA");
}else{
console.log(col);
}
}
function isZhi(a, b) {
let reduce = b;
do {
reduce = a % b;
a = b;
b = reduce;
} while (reduce !== 0)
if (reduce === 0 && a !== 1) {
console.log("false");
return false;
} else if (reduce === 0 && a === 1) {
console.log("true");
return true;
}
}
resolve();