EularProject 41:最长的n位Pandigital素数问题
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 math
from functools import reduce
def 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 True
def reducefunc(x,y):
return 10*x+y
def 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 lst
def 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 result
charlist=[i for i in range(7,0,-1)]
k=0
while True:
k+=1
temp=func3(k,charlist.copy())
data=reduce(reducefunc,temp)
if IsPrime(data):
print(data)
break
print("Get it")EularProject 41:最长的n位Pandigital素数问题的更多相关文章
- angular 输入框自动绑定值最长为16位,超过16位则会报错
最近发现angular在使用input输入框的ng-model绑定scope变量的时候,发现,输入长串的数字将会出错.代码如下: <html> <head> <meta ...
- csv的文件excel打开长数字后面位变0的解决方法
对于有大数字的CSV文件,应使用导入,而不是打开.这里以Excel2010为例,其它版本也可以参照: 打开Excel,此时Excel内为空白文档 点击工具栏中的[数据]→[自文本] 在“导入文本文件” ...
- (Problem 41)Pandigital prime
We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly o ...
- 【Android端 APP 启动时长获取】启动时长获取方案及具体实施
一.什么是启动时长? 1.启动时长一般包括三种场景,分别是:新装包的首次启动时长,冷启动时长.热启动时长 冷启动 和 热启动 : (1)冷启动:当启动应用时,后台没有该程序的进程,此时启动的话系统会分 ...
- HDU-2562 奇偶位互换
http://acm.hdu.edu.cn/showproblem.php?pid=2562 奇偶位互换 Time Limit: 3000/1000 MS (Java/Others) Memor ...
- HDOJ/HDU 2562 奇偶位互换(交换位置~)
Problem Description 给定一个长度为偶数位的0,1字符串,请编程实现串的奇偶位互换. Input 输入包含多组测试数据: 输入的第一行是一个整数C,表示有C测试数据: 接下来是C组测 ...
- phpstudy手动把mysql数据库从5.5.56升级到5.6.41
查看mysql版本: mysql> select version(); 1.关闭mysql,把原来的D:/phpStudy/PHPTutorial/mysql改名为MySQL_5.5.53作为备 ...
- 编译器是如何实现32位整型的常量整数除法优化的?[C/C++]
引子 在我之前的一篇文章[ ThoughtWorks代码挑战——FizzBuzzWhizz游戏 通用高速版(C/C++ & C#) ]里曾经提到过编译器在处理除数为常数的除法时,是有优化的,今 ...
- HDU 2562 奇偶位互换(字符串,水)
奇偶位互换 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
随机推荐
- ORACLE遞歸查詢
ORACLE支持常規的用CTE遞歸的方式實現遞歸查詢,也有自己特有的查詢方式,ORACLE文檔中叫層次數據查詢. 這裏通過一個簡單的样例來介紹這兩種查詢方式. 數據準備: CREATE TABLE T ...
- 高效的TCP数据拆包器
高效的TCP数据拆包器 接收器,每秒拆1KB的包达到30万以上 /// 数据同步协义数据接收器 /// </summary> /// <remarks> /// 主要功能有 / ...
- es69
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- php intval函数
php intval函数 作用 intval — 获取变量的整数值 使用实例 <?php echo intval('-42'); // -42 ?> 相似函数 boolval() - 获取 ...
- Linux平台下Ntop流量监测安装,并实现Netflow全过程
Linux平台下Ntop流量监测安装,并实现Netflow全过程 更多原创教学视频详见: http://you.video.sina.com.cn/m/1443650204 本文出自 "李晨 ...
- [Angular] Make a chatbot with DialogFlow
Register a account on https://console.dialogflow.com/api-client/ "Creat a intent" -- you c ...
- 一个令人蛋疼的NDK链接错误
背景 我们APP的引擎包engine.so.包括了A.B.C三个project.但每次都是源代码形式编译,导致svn上存在多份同样代码拷贝. 很不科学. ..核心的Bproject由我维护.整个SO编 ...
- AsyncTask源代码翻译
前言: /** <p>AsyncTask enables proper and easy use of the UI thread. This class allows to perfor ...
- Google、Mozilla、Qt、LLVM 这几家的规范是明确禁用异常的
作者:陈硕链接:https://www.zhihu.com/question/22889420/answer/22975569来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...
- Python: scikit-image gamma and log 对比度调整
这个函数,主要用来做对比度调整,利用 gamma 曲线 或者 log 函数曲线, gamma 函数的表达式: y=xγ, 其中, x 是输入的像素值,取值范围为 [0−1], y 是输出的像素值,通过 ...