def is_prime(num): if num == 1: return False if num == 2: return True if num > 2: # check for factors for i in range(2, num): if (num % i) == 0: return False return True # if input number is less than # or equal to 1, it is not prime else: return True def primeRemover(tri, m, n): for i in range(0, m+1): for j in range(0, n+1): if is_prime(tri[i][j]): tri[i][j] = 0 # print(tri) return tri def maxPathSum(tri, m, n): # loop for bottom-up calculation for i in range(m - 1, -1, -1): for j in range(i + 1): # print(tri) if (tri[i + 1][j] > tri[i + 1][j + 1]): tri[i][j] += tri[i + 1][j] else: tri[i][j] += tri[i + 1][j + 1] return tri[0][0] print('Enter the height of the pyramid:') h = input() tri = [[0 for x in range(int(h))] for y in range(int(h))] print(tri) for x in range(0, int(h)): for y in range(0, x+1): print('Enter your number in ['+str(x)+','+str(y)+']:') p = input() tri[x][y] = int(p) print(tri) edited_tri = primeRemover(tri, int(h)-1, int(h)-1) sum = maxPathSum(edited_tri, int(h)-1, int(h)-1) print(sum)