Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def primes(n):
- sieve = [True] * n
- for i in range(3, int(n**0.5)+1, 2):
- if sieve[i]:
- sieve[i*i::2*i] = [False]*((n-i*i-1)//(2*i)+1)
- return [2] + [i for i in range(3, n, 2) if sieve[i]]
- def digsum(n):
- total = 0
- for digit in str(n):
- total += int(digit)
- return total
- def energysave(before, after):
- before, safe = str(before)[-len(str(after)):], 0
- for digit in range(len(before)):
- num1, num2 = lights[int(before[digit])], lights[(int(str(after)[digit]))]
- for digit2 in range(7):
- if num1[digit2] == num2[digit2] == "1":
- safe += 1
- return safe*2
- totalsafe = 0
- lights = ["1110111", "0000011", "0111110", "0011111", "1001011", "1011101", "1111101", "1010011", "1111111", "1011111"]
- for x in primes(2*10**7+1)[len(primes(10**7+1)):]:
- while True:
- totalsafe += energysave(x, digsum(x))
- if len(str(digsum(x))) == 1:
- break
- x = digsum(x)
- print(totalsafe)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement