题目-勾股元组数
如果三个正整数A、B、C ,A²+B²=C²则为勾股数
如果ABC之间两两互质,即A与B,A与C,B与C均互质没有公约数,则称其为勾股数元组。请求出给定n~m范围内所有的勾股数元组。
输入
起始范围
1 | 1 < n < 10000 |
输出
ABC保证A<B<C;输出格式A B C
多组勾股数元组,按照A B C升序的排序方式输出。
若给定范围内,找不到勾股数元组时,输出Na。
关键点
- a b 互质,即 a 和 b 的公约数为1
概念:公约数只有1的两个数叫做互质数。根据互质数的概念可以对一组数是否互质进行判断。如:3和11的公约数只有1,则它们是互质数。
这里用阿基里德算法(辗转相除法),递归方式,如果最后结果==1,表示a,b 互质:gcd(a,b) = gcd(b, a%b)
- i,j,k 用穷举法得出,满足条件 i<j<k,且 i,j,k 两两互质
两个数是否互质
1 | def isPrime(x,y): |
1 | isPrime(1,1) |
False
1 | isPrime(2,9) |
True
1 | isPrime(3,8) |
True
1 | isPrime(3,15) |
False
勾股元组数判断
1 | def isPrime(x,y): |
1 | gou_gu(3,9) |
3
4
5
**********
1 | gou_gu(3,20) |
3
4
5
**********
5
12
13
**********
8
15
17
**********
1 | gou_gu(8,20) |
8
15
17
**********
1 | gou_gu(5,20) |
5
12
13
**********
8
15
17
**********