소수 3797에는 왼쪽부터 자리수를 하나씩 없애거나 (3797, 797, 97, 7) 오른쪽부터 없애도 (3797, 379, 37, 3) 모두 소수가 되는 성질이 있습니다.
이런 성질을 가진 소수는 단 11개만이 존재합니다. 이것을 모두 찾아서 합을 구하세요.
(참고: 2, 3, 5, 7은 제외합니다)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | import math def isPrime(n): if n == 2 or n == 3: return True if n % 2 == 0 or n == 1: return False for i in range(3, int(math.sqrt(n)) + 1, 2): if n % i == 0: return False return True def isAllPrime(n): buf = n nLen = 0 isAllPrime = False while buf>0: if isPrime(buf): isAllPrime = True else: isAllPrime = False break if buf < 10: break buf /= 10 nLen +=1 if isAllPrime: buf = n while buf!=0: if isPrime(buf): buf %= (10 ** (nLen)) nLen -=1 else: break if buf == 0: return True else : return False result = 0 i = 10 pCnt = 0 while pCnt !=11: if isAllPrime(i): pCnt += 1 print "%6d" % i result += i i+=1 print "result is %d" % result | cs |
C:\Python27\python.exe C:/Users/Com/PycharmProjects/isAllPrime.py
23
37
53
73
313
317
373
797
3137
3797
739397
result is 748317
'* Computer Science > Project Euler' 카테고리의 다른 글
project euler 41.problem (0) | 2016.10.20 |
---|---|
project euler 44. problem (0) | 2016.10.18 |
project euler 43. problem (0) | 2016.10.05 |
Permutation (0) | 2016.09.30 |
project euler 42. problem (0) | 2016.09.23 |