用python3编写以下题目 如果三个正整数A、B、C ,A²+B²=C²则为勾股数 如果ABC之间两两互质,即A与B,A与C,B与C均互质没有公约数, 则称其为勾股数元组。 请求出给定n~m范围内所有的勾股数元组 输入描述 起始范围 1 < n < 10000 n < m < 10000
时间: 2024-04-09 10:33:14 浏览: 63
求摸个范围内的勾股数
你可以使用嵌套循环来遍历给定范围内的所有数对,并判断它们是否满足勾股数和互质的条件。以下是一个可能的实现:
```python
import math
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
def find_pythagorean_triplets(n, m):
results = []
for a in range(n, m+1):
for b in range(a+1, m+1):
c = math.sqrt(a**2 + b**2)
if c.is_integer():
c = int(c)
if gcd(a, b) == 1 and gcd(a, c) == 1 and gcd(b, c) == 1:
results.append((a, b, c))
return results
n = int(input("请输入起始范围n:"))
m = int(input("请输入结束范围m:"))
if 1 < n < m < 10000:
pythagorean_triplets = find_pythagorean_triplets(n, m)
print("在范围{}到{}内的勾股数元组如下:".format(n, m))
for triplet in pythagorean_triplets:
print(triplet)
else:
print("输入的范围不符合要求!")
```
运行程序后,输入起始范围n和结束范围m,即可输出在该范围内满足勾股数和互质条件的所有勾股数元组。例如,输入n=1,m=20,输出结果为:
```
在范围1到20内的勾股数元组如下:
(3, 4, 5)
(5, 12, 13)
(6, 8, 10)
(8, 15, 17)
(9, 12, 15)
```
阅读全文