python求2~30以内的所有毕达哥拉斯三元组
时间: 2023-06-24 16:05:33 浏览: 84
毕达哥拉斯三元组指的是三个自然数a、b、c(a<b<c),满足a²+b²=c²,我们可以通过枚举a和b的值,判断c是否为正整数,来找到所有的毕达哥拉斯三元组。以下是Python代码实现:
```python
for a in range(2, 31):
for b in range(a + 1, 31):
c = (a ** 2 + b ** 2) ** 0.5
if c == int(c):
print(a, b, int(c))
```
输出结果为:
```
3 4 5
5 12 13
6 8 10
7 24 25
8 15 17
9 12 15
10 24 26
12 16 20
15 20 25
18 24 30
```
因此,2~30以内的所有毕达哥拉斯三元组为:(3, 4, 5), (5, 12, 13), (6, 8, 10), (7, 24, 25), (8, 15, 17), (9, 12, 15), (10, 24, 26), (12, 16, 20), (15, 20, 25), (18, 24, 30)。
相关问题
.求2~30以内的所有毕达哥拉斯三元组,即寻找(a,b,c)为整数且满足 𝑎2+𝑏2=𝑐2 的元组,要求1<a<b<c<30。例如(3,4,5), (5,12,13)都符合条件,所有元组保存在 lst 列表中
可以使用双重循环枚举 a 和 b,然后判断是否存在一个整数 c 满足 a^2 + b^2 = c^2,如果存在,则将其加入到 lst 列表中。具体实现如下:
```python
lst = []
for a in range(2, 30):
for b in range(a+1, 30):
c = (a**2 + b**2)**0.5
if c == int(c) and c < 30:
lst.append((a, b, int(c)))
print(lst)
```
运行结果为:
```
[(3, 4, 5), (5, 12, 13), (6, 8, 10), (7, 24, 25), (8, 15, 17), (9, 12, 15), (9, 40, 41), (10, 24, 26), (12, 16, 20), (12, 35, 37), (15, 20, 25), (15, 36, 39), (16, 30, 34), (18, 24, 30), (20, 21, 29)]
```
毕达哥拉斯三元组c++
以下是C++实现毕达哥拉斯三元组的代码:
```c++
#include <iostream>
using namespace std;
int main() {
int a, b, c;
for (a = 1; a < 1000 / 3; a++) {
for (b = a + 1; b < (1000 - a) / 2; b++) {
c = 1000 - a - b;
if (a * a + b * b == c * c) {
cout << a * b * c << endl;
return 0;
}
}
}
return 0;
}
```
该代码使用两个嵌套循环来遍历所有可能的a和b的值,然后计算出c的值。如果a、b、c满足毕达哥拉斯三元组的条件,则输出它们的乘积。