# this file available at: https://arachnoid.com/files/python01/ import math # pythagorean triple: # https://mathworld.wolfram.com/PythagoreanTriple.html # https://en.wikipedia.org/wiki/Pythagorean_triple def gcd(a:float,b:float) -> float: if b == 0: return a else: return gcd(b, a%b) def triple_search(max : int = 100) -> int: width = 4 count = 0 print(f'{"a":>{width}} {"b":>{width}} {"c":>{width}}') print('------------------') for a in range(1,max+1): for b in range(a,max+1): c = (a*a+b*b)**0.5 ic = int(c) # if gcd of a,b,c = 1 and c is an integer if c == ic and math.gcd(a,math.gcd(b,ic)) == 1: count += 1 print(f'{a:{width}} {b:{width}} {ic:{width}}') return count def main(): max = 100 count = triple_search(max) print(f'\nResult: {count} primitive Pythagorean triples with a,b side lengths <= {max}') if __name__ == "__main__": main()