def notPrime(num): for i in range(2,num): if num % i == 0: return True return False def maxPathSum(pyramid, m, n): for i in range(m-1, -1, -1): for j in range(i+1): if (notPrime(pyramid[i+1][j]) and notPrime(pyramid[i+1][j+1])) and (notPrime(pyramid[i][j])): if (pyramid[i+1][j] > pyramid[i+1][j+1]): pyramid[i][j] += pyramid[i+1][j] else: pyramid[i][j] += pyramid[i+1][j+1] else: if not (notPrime(pyramid[i+1][j])) and notPrime(pyramid[i+1][j+1]): pyramid[i][j] += pyramid[i+1][j+1] elif not (notPrime(pyramid[i+1][j+1])) and notPrime(pyramid[i+1][j]): pyramid[i][j] += pyramid[i+1][j] else: continue return pyramid[0][0] file = open("test.txt","r") pyramid = [] count = 0 while True: data = file.readline().split() if not data: file.close() break pyramid.append(data) for row in pyramid: for i in range(len(row)): row[i] = int(row[i]) for row in pyramid: for num in range(len(pyramid[-1])-len(row)): row.append(0) len_row = int(len(pyramid)) len_col = int(len(pyramid[0])) print(maxPathSum(pyramid,len_row -1 ,len_col -1))