|
发表于 2019-3-29 13:55:47
|
显示全部楼层
本帖最后由 k往事如烟k 于 2019-3-29 13:57 编辑
- def isPrime(num):
- if num <= 1:
- return False
- else:
- for i in range(2, int(num**0.5+1)):
- if num % i == 0:
- return False
- else:
- return True
- def isPandigital(num):
- if len(str(num)) > 9:
- return False
- else:
- numTempList = []
- refNumList = []
- for i in range(len(str(num))):
- numTempList.append(int(str(num)[i]))
- refNumList.append(i+1)
- numList = list(set(numTempList))
- if numList == refNumList:
- return True
- else:
- return False
- #一个n位数的不重复数字的全排列
- def perm(n):
- if n < 1 or n > 9:
- return "输入有误,n应为1~9之间的整数!"
- else:
- import itertools
- for i in range(1, n+1):
- if i == 1:
- listTemp = [1]
- else:
- listTemp = []
- for j in range(1, i+1):
- listTemp.append(j)
- list1 = list(itertools.permutations(listTemp, len(listTemp)))
- numList = []
- for i in range(len(list1)):
- numStr = ""
- for j in range(len(list1[i])):
- numStr += str(list1[i][j])
- num = int(numStr)
- numList.append(num)
- return numList
- allNumList = []
- for n in range(1, 10):
- for each in perm(n):
- allNumList.append(each)
- PrimePandigitalNumList = []
- for each in allNumList:
- if isPrime(each) and isPandigital(each):
- PrimePandigitalNumList.append(each)
- PrimePandigitalNumList.sort()
- print(PrimePandigitalNumList[-1])
复制代码
7652413 |
|