鱼C论坛

 找回密码
 立即注册
查看: 2928|回复: 10

[技术交流] 小练习 20170501 找出非梅森素数28433 × 2^7830457 + 1的最后十位

[复制链接]
发表于 2017-5-1 15:21:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 冬雪雪冬 于 2017-5-8 14:38 编辑

从现在开始我们要开展一批欧拉计划的习题练习。
其实在我们论坛中已有欧拉计划的板块,可能有些鱼油还没注意到。
什么是欧拉计划:http://bbs.fishc.com/thread-60405-1-1.html
我们欧拉板块现已给出了200余题,这批练习将从欧拉计划中选题。其实用python语言完成有很多的优势,可以更简洁更方便的实现。
如果大家有兴趣也可浏览欧拉的英文网站:https://projecteuler.net/archives
这里已经有了500余题。


                               
登录/注册后可看大图


题目要求:
以python语言完成,如果是python2请注明。
程序以代码文字格式发帖。
注重程序效率和创意。
答题在一周内完成,即5.8 10:00之前,其后将公开大家的答案,并评比成绩。

另程序和答案可以在网上搜到,希望大家独立完成。题目不难,大家看看谁的效率高。

----回帖需写明解题思路,鼓励在程序中加上注释


一些鱼油反映题目有些过难,为此略过一部分偏难的题目。





题目:

第一个超过一百万位的素数是在 1999 年发现的,并且是一个梅森素数:

                               
登录/注册后可看大图
;它包含 2,098,960 位。之后包含更多位的,形如

                               
登录/注册后可看大图
的梅森素数被陆续发现。

但是在 2004 年人们发现了一个巨大的包含 2,357,207 位的非梅森素数:

                               
登录/注册后可看大图


找出这个素数的最后十位。





本帖被以下淘专辑推荐:

  • · |主题: 1, 订阅: 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-1 15:43:31 | 显示全部楼层
没看懂题目,百度也看不懂。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-1 17:20:04 From FishC Mobile | 显示全部楼层
本帖最后由 jerryxjr1220 于 2017-5-2 17:15 编辑

一行代码输出:

  1. print(28433*pow(2, 7830457, 10**10) +1)%10**10
复制代码

8739992577

评分

参与人数 1荣誉 +10 鱼币 +10 收起 理由
冬雪雪冬 + 10 + 10

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-2 10:20:10 | 显示全部楼层
  1. #!/usr/bin/env python
  2. # coding=utf-8
  3. # python 2.7
  4. # 指数7830457,10000切片分别计算
  5. p = 7830457
  6. n = 10000
  7. a = p%n
  8. b = p/n
  9. c = int(str(2**n)[-10:])
  10. d = int(str(c**b)[-10:])
  11. e = int(str(2**a)[-10:])
  12. f = int(str(d*e)[-10:])
  13. g = int(str(28433*f)[-10:])+1
  14. print g

复制代码

8739992577
[Finished in 0.0s]

评分

参与人数 1荣誉 +10 鱼币 +10 收起 理由
冬雪雪冬 + 10 + 10

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-2 10:55:15 | 显示全部楼层
我也只会这样了
  1. x=1
  2. for i in range(7830457):
  3.     x*=2
  4.     if x>10**10:x=x%(10**10)

  5. print((x*28433+1)%10**10)
复制代码

评分

参与人数 1荣誉 +10 鱼币 +10 收起 理由
冬雪雪冬 + 10 + 10

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-2 18:03:01 | 显示全部楼层
  1. x = 28433 * pow(2, 7830457) + 1
  2. print(x % (pow(10, 10)))
复制代码

我理解错题目了?
  1. 8739992577
复制代码

评分

参与人数 1荣誉 +10 鱼币 +10 收起 理由
冬雪雪冬 + 10 + 10

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-2 21:45:59 | 显示全部楼层
本帖最后由 小剑剑 于 2017-5-2 21:48 编辑

刚好学了信安数学,啥不学就学求mod  本题就可以看成是对10**10求mod
用一下模重复平方计算

  1. def func(mo,inde,orgin,ba,an):
  2.        inde=bin(inde)[2:]
  3.        ba=ba%mo
  4.        orgin=orgin%mo
  5.        for i in range(-1,-len(inde)-1,-1):
  6.               if int(inde[i]):
  7.                      orgin=(orgin*ba)%mo
  8.               ba=ba**2%mo
  9.        orgin=(orgin+an)%mo
  10.        return orgin


  11. print(func(10**10,7830457,28433,2,1))
复制代码



结果 8739992577

评分

参与人数 1荣誉 +10 鱼币 +10 收起 理由
冬雪雪冬 + 10 + 10

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-5 11:21:29 | 显示全部楼层
a = 1+28433*2**7830457
b = str(a)
print(b[-10:])

评分

参与人数 1荣誉 +10 鱼币 +10 收起 理由
冬雪雪冬 + 10 + 10

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-7 05:23:32 | 显示全部楼层
  1. print ((28433 * pow(2, 7830457, 10**10) + 1) % 10 ** 10)
复制代码

评分

参与人数 1荣誉 +10 鱼币 +10 收起 理由
冬雪雪冬 + 10 + 10

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-7 21:12:18 | 显示全部楼层
  1. (28433*2**7830457+1)%10**10
复制代码

答案 8739992577

评分

参与人数 1荣誉 +10 鱼币 +10 收起 理由
冬雪雪冬 + 10 + 10

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-8 09:41:02 | 显示全部楼层
  1. n = 7830457
  2. a = 28433
  3. i = 0
  4. while i <= n:
  5.     a *= 2
  6.     i += 1
  7.     while a > 10**10:
  8.         a = a % (10**10)

  9. print(a + 1)
复制代码

结果是7479985153
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 11:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表