danchaofan

Euler #387

Jan 5th, 2019
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.15 KB | None | 0 0
  1. def is_prime(n):
  2.     if n == 2 or n == 3: return True
  3.     if n < 2 or n % 2 == 0: return False
  4.     if n < 9: return True
  5.     if n % 3 == 0: return False
  6.     r = int(n**0.5)
  7.     f = 5
  8.     while f <= r:
  9.         if n % f == 0: return False
  10.         if n % (f+2) == 0: return False
  11.         f += 6
  12.     return True
  13.  
  14.  
  15. def digitsum(num):
  16.     num, total = str(num), 0
  17.     for digit in num:
  18.         total += int(digit)
  19.     return total
  20.  
  21.  
  22. def newdigits(num):
  23.     newNums = []
  24.     num = str(num)
  25.     for digit in range(10):
  26.         newNums.append(int(num + str(digit)))
  27.     return newNums
  28.  
  29. harshadCurrent = [1, 2, 3, 4, 5, 6, 7, 8, 9]
  30. harshadRepo = []
  31. checked = []
  32.  
  33. for digitsAdded in range(12):
  34.     harshadRepo = []
  35.     for harshad in harshadCurrent:
  36.         for entry in newdigits(harshad):
  37.             if entry % digitsum(entry) == 0:
  38.                 harshadRepo.append(entry)
  39.                 if is_prime(entry/digitsum(entry)):
  40.                     for entry2 in newdigits(entry):
  41.                         if is_prime(entry2):
  42.                             checked.append(entry2)
  43.     harshadCurrent = harshadRepo
  44. print(checked)
  45. print(sum(checked))
Add Comment
Please, Sign In to add comment