EularProject 41:最长的n位Pandigital素数问题
来源:互联网 发布:数据导出 编辑:程序博客网 时间:2024/06/06 14:04
Pandigital prime
Problem 41
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?
Answer:
7652413
Completed on Thu, 30 Jul 2015, 08:32
Go to the thread for problem 41 in the forum.
首先发现3k和3k-1位的ppandigital肯定能被3整除,所以就剩下1,4,7,10,13。。。猜测题意应该是9以内的所以就试试7咯,代码是前面代码扩展,就出结果了
http://blog.csdn.net/zhangzhengyi03539/article/details/43501225
http://blog.csdn.net/zhangzhengyi03539/article/details/47057049
__author__ = 'zhengyi'import mathfrom functools import reducedef IsPrime(x): if x==1: return False k=int(math.sqrt(x))+1 for i in range(2,k): if x%i==0: return False return Truedef reducefunc(x,y): return 10*x+ydef func1(x): i=1 val=1 while val<x: i+=1 val*=i if val==x: return (1,i,0) else: step=val//i k=x//step return (k,i-1,x%(k*step))def func2(x): lst=[] result=func1(x) while result[2]!=0: lst.append(result[0:2]) result=func1(result[2]) lst.append(result[0:2]) return lstdef func3(x,clst): result=[] count=len(clst) lst=func2(x) length=len(lst) for i in range(0,length): if i<length-1: delta=lst[i][0] position=lst[i][1]+1 while count>position: result.append(clst[-count]) del clst[-count] count-=1 result.append(clst[-position+delta]) del clst[-position+delta] count-=1 else: delta=lst[i][0]-1 position=lst[i][1]+1 while count>position: result.append(clst[-count]) del clst[-count] count-=1 result.append(clst[-position+delta]) del clst[-position+delta] count-=1 while count>0: result.append(clst[-1]) del clst[-1] count-=1 return resultcharlist=[i for i in range(7,0,-1)]k=0while True: k+=1 temp=func3(k,charlist.copy()) data=reduce(reducefunc,temp) if IsPrime(data): print(data) breakprint("Get it")
0 0
- EularProject 41:最长的n位Pandigital素数问题
- EularProject 35:循环素数
- EularProject 27: 二次表达式的连续值素数
- EularProject 23: 充足数的和问题
- EularProject 24: 排列组合的序数问题
- EularProject 26: 单位分数的循环问题
- 求n以内的素数个数问题
- 生成和测试N位大素数的方法
- EularProject 12: 三角形数的因子个数问题
- EularProject 29: a^b的归并排序问题
- EularProject 43: 带条件约束的排列组合挑选问题
- 素数定理求10^n的素数的个数的值有多少位
- EularProject 7: 计算10001个素数
- EularProject 37:双向可截素数
- 小于n的素数
- (Problem 41)Pandigital prime
- 求n内素数问题
- C(n,k)中素数P的问题
- 高并发网站的设计解决方法
- iOS开发UI篇—UITableviewcell的性能优化和缓存机制
- monkeyrunner 使用
- 【Android UI】自定义圆形Loading动画
- 编译librtmp for Android
- EularProject 41:最长的n位Pandigital素数问题
- 局部图像特征描述概述
- Java编程思想第四章练习6答案
- C# Winform 跨线程更新UI控件常用方法总结(转)
- 使用Python连接MySQL数据库
- c语言实现几种排序算法OC实现
- 进程线程的解释
- C语言中控制台应用程序中空格的输出。编译环境:vs2010
- Shell 学习1 - Shell 简介