1부터 n까지의 숫자를 하나씩만 써서 만든 n자리 숫자를 팬디지털(pandigital)이라고 부릅니다.
2143은 4자리 팬디지털인데, 이 수는 동시에 소수이기도 합니다.
n자리 팬디지털 소수 중에서 가장 큰 수는 무엇입니까?
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 55 | # coding=utf-8 import math def isPandigital(n): List = [1, 2, 3, 4, 5, 6 ,7, 8, 9] if len(n) == 9: n = int(n) while n!=0: tmp = n % 10 n /= 10 if List[tmp-1] != 0: List[tmp-1] = 0 else: return False return True def primecheck(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 permute(list): if not list: return [list] else: res = [] for i in range(len(list)): rest = list[:i] + list[i+1:] for x in permute(rest): res.append(list[i:i+1]+x) return res def listSumming(list): result = 0 for i in range(0, len(list)): result += list[len(list)-i-1]* (10 ** i) return result list = [1,2,3,4,5,6,7,8,9] ppmax = 0 for i in range(0, 10): for j in permute(list[:len(list)-i]): output = listSumming(j) if primecheck(output): if output > ppmax: ppmax = output print ppmax | cs |
C:\Users\soicem\Desktop\연습용 폴더>python test.py
7652413
'* Computer Science > Project Euler' 카테고리의 다른 글
project euler 46. problem (0) | 2016.12.09 |
---|---|
project euler 52. problem (0) | 2016.11.14 |
project euler 44. problem (0) | 2016.10.18 |
project euler 37. problem (0) | 2016.10.13 |
project euler 43. problem (0) | 2016.10.05 |