素勾股数
题目:勾股数,是由三个正整数组成的数组;能符合勾股定理 aa + bb = c*c ,(a, b, c) 的正整数解。 如果 (a, b, c) 是勾股数,它们的正整数倍数,也是勾股数。 如果 (a, b, c) 互质,它们就称为素勾股数。 给定正整数N, 计算出小于或等于N的素勾股数个数。 输入描述:输一个正整数 输出描述:素勾股数,如果找不到,输出NA 示例输入: 1 20 示例输出: 3 4 5 5 12 13 8 15 17
def isPrime(a,b):
while b != 0 :
c = a%b
a = b
b = c
if a == 1:
return True
else:
return False
N = int(input())
M = int(input())
res = list()
for i in range(N, M+1):
for j in range(i, M+1):
for k in range(j,M+1):
if i**2 + j**2 == k**2 and isPrime(i,j) and isPrime(j,k) and isPrime(k,i):
res.append([i,j,k])
if res:
for i in res:
print(" ".join(str(x) for x in i))
else:
print("NA")
|