Project Euler 97 :Large non-Mersenne prime 非梅森大素数
2015-12-06 20:21
411 查看
Thefirstknownprimefoundtoexceedonemilliondigitswasdiscoveredin1999,andisaMersenneprimeoftheform26972593−1;itcontainsexactly2,098,960digits.SubsequentlyotherMersenneprimes,oftheform2p−1,havebeenfoundwhichcontainmoredigits.
However,in2004therewasfoundamassivenon-Mersenneprimewhichcontains2,357,207digits:28433×27830457+1.
Findthelasttendigitsofthisprimenumber.
1999年人们发现了第一个超过一百万位的素数,这是一个梅森素数,可以表示为26972593−1,包含有2,098,960位数字。在此之后,更多形如2p−1的梅森素数被发现,其位数也越来越多。
然而,在2004年,人们发现了一个巨大的非梅森素数,包含有2,357,207位数字:28433×27830457+1。
找出这个素数的最后十位数字。
解题
感觉很简单。。。
JAVA
packageLevel3; importjava.io.BufferedReader; importjava.io.FileReader; importjava.io.IOException; importjava.math.BigInteger; importjava.util.ArrayList; publicclassPE097{ publicstaticvoidrun(){ BigIntegerm=newBigInteger("10000000000"); BigIntegerr1=newBigInteger("28433"); BigIntegert=newBigInteger("2"); BigIntegerexp=newBigInteger("7830457"); BigIntegerres=t.modPow(exp,m); res=r1.multiply(res).add(newBigInteger("1")); res=res.mod(m); System.out.println(res); } publicstaticvoidmain(String[]args)throwsIOException{ longt0=System.currentTimeMillis(); run(); longt1=System.currentTimeMillis(); longt=t1-t0; System.out.println("runningtime="+t/1000+"s"+t%1000+"ms"); } }
//8739992577
//runningtime=0s2ms
就这样
或者这样
publicstaticvoidrun2(){
longbase=2;
longmod=1000000000;
longexp=7830457;
longres=28433;
for(longi=1;i<=exp;i++){
res=(res*2)%mod;
}
res+=1;
res%=mod;
System.out.println(res);
}
//739992577
//runningtime=0s163ms
上面mod少个0求的是后9位的数,因为多个0就越界了,少一位手工0到9可以暴力遍历。。。
Python
#coding=gbk
importcopy
importtimeastime
defmain():
print((28433*(2**7830457))+1)%10000000000
t0=time.time()
main()
t1=time.time()
print"runningtime=",(t1-t0),"s"
#8739992577
#runningtime=0.0190000534058s
也就这样
相关文章推荐
- C-052.static与extern对全局变量的作用
- 学习模式
- 卫星输入任务的语义解析
- Measuring PostgreSQL Checkpoint Statistics
- VS修改项目解决方案名称
- 拓扑排序
- UVA 题目624 CD(01背包输出路径啊)
- leveldb 源码阅读,细节记录memberTable
- C++采用AD0方式连接MSSQL时程序崩溃(win7运行正常,XP崩溃)
- 32位计算机上ANSI C90标准规定的数据类型
- 有焦点的TextView
- Linux查看用户数、登录用户
- 阿里云上搭建nginx+uwsgi+flask
- 插入排序
- Linux查看用户数、登录用户
- 第十三周学习笔记
- Struts2框架学习(二) Action
- Makefile学习笔记
- 通过在BasicController使用ModelAttribute标签注入Request/Response/Session
- 基于Android应用《玩转英语》(总报告)