Lecture Notes on 07 Mar 2014 # sum digits of a number def sum_digits (n): sum = 0 while (n > 0): sum += n % 10 n = n // 10 return sum # reverse a number def rev_num (n): r_num = 0 while (n > 0): r_num = r_num * 10 + n % 10 n = n // 10 return r_num # determine if a number is palindromic def is_palindromic (n): return (n == rev_num(n)) # determine if a number is prime def is_prime (n): limit = int (n ** 0.5) + 1 for div in range (2, limit): if (n % div == 0): return False return True # compute the nth Fibonacci term def fib (n): f = 0 if (n == 0) or (n == 1): f = n else: f1 = 0 f2 = 1 for i in range (2, n + 1): f = f1 + f2 f1 = f2 f2 = f return f # determine if a number is perfect def is_perfect (n): sum_div = 0 limit = n // 2 + 1 for div in range (1, limit): if (n % div == 0): sum_div += div return (n == sum_div) def main(): # determine a non-palindromic number whose cube is palindromic for n in range (1000, 10000): if (not is_palindromic (n)) and (is_palindromic (n * n * n)): n3 = n * n * n print (n, n3) break # determine the smallest prime that remains prime # when added to its reversal for n in range (100, 1000): if (is_prime(n)) and (is_prime(n + rev_num(n))): rev_n = n + rev_num(n) print (n, rev_n) break # find sum of the even valued terms in the # Fibonacci series whose values do not exceed 4 million. sum_fib = 0 f = 0 n = 0 while (f < 4000000): f = fib (n) if (f % 2 == 0): sum_fib += f n += 1 print (sum_fib) main()