python_OD_勾股数

如果三个正整数A、B、C ,A²+B²=C²则为勾股数
如果ABC之间两两互质,即A与B,A与C,B与C均互质没有公约数,
则称其为勾股数元组。
请求出给定n~m范围内所有的勾股数元组

输入描述
起始范围
1 < n < 10000
n < m < 10000

输出描述
ABC保证A<B<C
输出格式A B C
多组勾股数元组,按照A B C升序的排序方式输出。
若给定范围内,找不到勾股数元组时,输出Na。

示例一
输入

1
20

输出

3 4 5
5 12 13
8 15 17

示例二
输入

5
10

输出

Na

题目思路:

从n到m选出三个数字A B C
1,互为质数,没有公约数
2,不可重复  A!=B!=C
3,符合勾股定理  A^2+B^2=C^2
n,m = map(int,input().split())   #转换类似
def gys(x,y,z):
    for i in range(2,min(x,y,z)**2):
        if x%i == 0 and y%i == 0 and z%i == 0:   #互相不整除,互为质数
            return False
    return True
res = []
try:
    for A in range(n,m+1):
        for B in range(A,m+1):
            for C in range(B,m+1):
                if A**2 + B**2 == C**2 and gys(A,B,C):
                    res.append((A,B,C))
    if len(res)==0:
        print("Na")
    else:
        # print(res)
        for i,j,k in res:
            print(i,j,k)  #输出为数字
except Exception as e:
    print("ERROR:",e)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值