import sys MIN_NUMBER = -sys.maxsize-1 def isPrime(num): if num == 0 or num == 1 or num < 0: return False for i in range(2,int(num**0.5)+1): if num % i == 0: return False return True def readFile(filename): f = open(filename, "r") arr = [] lines = f.readlines() for line in lines: arr.append(line.strip().split(" ")) f.close() return arr def typecast(arr): for i in range(len(arr)): for j in range(len(arr[i])): arr[i][j] = int(arr[i][j]) return arr def extractPrimes(arr): for i in range(len(arr)): for j in range(len(arr[i])): if isPrime(arr[i][j]): arr[i][j] = MIN_NUMBER return arr def maxSum(arr): while len(arr) > 1: tmp = [] for i in range(len(arr[-2])): val = arr[-2][i] left, right = arr[-1][i], arr[-1][i+1] if val == MIN_NUMBER: tmp.append(MIN_NUMBER) continue elif left == MIN_NUMBER and right == MIN_NUMBER: tmp.append(MIN_NUMBER) else: tmp.append(max(left+val, right+val)) del arr[-2:] arr.append(tmp) return arr[0][0] arr = readFile("file.txt") arr = typecast(arr) arr = extractPrimes(arr) print(f'Max sum : {maxSum(arr)}')