NO_41 Pandigital prime
来源:互联网 发布:电视虚拟鼠标软件 编辑:程序博客网 时间:2024/06/05 20:22
题目:
We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly once. For example, 2143 is a 4-digit pandigital and is also prime.
What is the largest n-digit pandigital prime that exists?
代码为:__author__ = 'Administrator'import reimport itertoolsimport stringimport mathimport timet=time.time()def isprime(n): if n==2: return True else: if n%2==0: return False for div in range(3,int(math.sqrt(n)+1),2): if not n%div: return False return Truedef func(sourcelist): if not sourcelist: return None sortedlist=list(itertools.permutations(sourcelist)) numlist=[int(''.join(inlist)) for inlist in sortedlist] numlist.sort(reverse=True) maxprime=0 for x in numlist: if isprime(x): maxprime=x break if maxprime==0: maxprime=func(sourcelist[:-2]) return maxprimesourcelist=list('123456789')print func(sourcelist)print time.time()-t运行结果为:
7652413
20.503000021
缺点为:
太慢了,运行速度太慢了。
但是我觉得我应该没有可以再减少的了吧。。
看下别人的代码吧。
别人的思路:
1+2+。。+9=45 能被3 整除
1+2+。。+8=36也能被3整除
所以
sourcelist=list('1234567')
所以运行的结果为:
7652413
0.00399994850159
0 0
- NO_41 Pandigital prime
- (Problem 41)Pandigital prime
- Project Euler:Problem 41 Pandigital prime
- 欧拉工程第41题:Pandigital prime
- Problem 41 Pandigital prime (暴力set+vector)
- No_32:Pandigital products
- PE32-Pandigital products
- [Euler]Problem 32 - Pandigital products
- 32 Pandigital products - Project Euler -
- Prime
- prime
- Prime
- prime
- Prime
- prime
- prime
- PRIME
- prime
- 浅看IT业界
- WINDOWS服务启动依赖关系
- VMware 常见问题
- 前三章或者四章主要内容看今天学到哪一章了
- prefuse 给节点以及边赋予权值
- NO_41 Pandigital prime
- Ubuntu 下配置安卓开发环境
- 2013-01-05 14:01 IE下JSON 未定义
- VMware vSphere Client 挂接硬盘
- vmware的使用技巧
- 如何创建死锁
- Crossover 教程, 在Mac上运行Win程序
- 几个fork面试题目的验证
- JavaScript 人脸识别技术