题目:
如果3个正整数(a,b,c)满足的关系,则称(a,b,c)为勾股数(著名的勾三股四弦五),为了探索勾股数的规律,我们定义如果勾股数(a,b,c)之间两两互质(即a与b,a与c,b与c之间均互质,没有公约数),则其为勾股数元祖(例如(3,4,5)是勾股数元祖,(6,8,10)则不是勾股数元祖)。请求出给定范围[N,M]内,所有的勾股数元祖。
解题1:
1.依次判断这三个数是否互质,将判断互质方法封装成一个函数。如果两个数有公约数,那么就返回1,这两个数不互质。
2.只要这三个数当中任意两个不互质,那么这一组数就不是勾股数元组。因此使用的是 || 运算符。
3.因为a^2+b^2=c^2 ,因此a<b<c,for循环时应该从上一个数的下一位开始遍历。
代码:
function isExistPrime(q,p) {
//判断两个数是否互质,如果互质返回0,不互质返回1
let max = (q > p) ? q : p
for(let i = 2 ; i <= max ;i++) {
if(q % i == 0 && p % i == 0) {
return 1
}
}