编辑时:正如@WillNess指出的那样,我最初的基于筛子的生成素数的方法不是最优的.我已经修改了原发电机.

在计算第n个斐波那契数时,每n个都将重建所有先前的斐波那契数.这使得您生成n的斐波那契数的算法至少在n上是二次的-这不是计算线性递归项的好方法.

同样,对于每个n,您都将通过粗略的除法检验n是否为质数.存储已经计算出的素数以简化该部分的流水线更有意义,并且仅测试奇数(2之后)作为下一个素数.

像这样:

from math import sqrt

def isPrime(k,known):

"""assumes k is odd and known includes odd primes <= sqrt(p)"""

s = sqrt(k)

for p in known:

if k % p == 0:

return False

elif p > s:

return True

def primes():

yield 2

yield 3

yield 5

known = [5] #known odd primes > 3. Iteration skips multiples of 3

candidate = 7

parity = 1

while True:

while not isPrime(candidate,known):

candidate += (2 + 2*parity)

parity = 1 - parity

yield candidate

known.append(candidate)

candidate += (2 + 2*parity)

parity = 1 - parity

def fib():

yield 1

a = 1

b = 1

while True:

yield b

a,b = b, a+b

def search(k, limit = 100000):

"""searches for the first k examples among first limit pairs"""

hits = []

for i,(f,p) in enumerate(zip(fib(),primes())):

if i > limit:

return "Not found"

elif f % p == 0:

hits.append((i,f,p))

if len(hits) == k: return hits

调用search(2)时,它几乎立即返回:

[(2159, 11582916825736584646975443653366322388921641167905180075281721851717008301903980437476277463379606054064279901980733340808520924624506359466585610824954684399084897922087504296705002387813173728581009860851320738456488209562894492182740289488332663607728717459344508234312101775586816401162288539598276213213951642360269055931032970100599429340189881639747365248788048662076913003130071131663108327512733069326012197090400460556913764055449808782413120, 19009), (3047, 4414103171422717935355962509499454349778622162400781459697552399266028998073052301861983592098091170325382922374854427709365699448595338643109175128231512749180137239630552350668736159301331619783913278988698914397585103122958242938481707043703775239751032229629764002510837997551552225537574210211945427154275570535341744487610518195389286251136162913276874919649834195343551175847369401914668124502580414188411921940167995410000017796803115148941554642484534655371013695818145603303564888547079314332213882853124811024475730089466430117462078329371553861038010496072275843988120946471902434970719656034482802077255302581089149251082976, 27941)]

为了娱乐:

>>> search(3)

[(2159, 11582916825736584646975443653366322388921641167905180075281721851717008301903980437476277463379606054064279901980733340808520924624506359466585610824954684399084897922087504296705002387813173728581009860851320738456488209562894492182740289488332663607728717459344508234312101775586816401162288539598276213213951642360269055931032970100599429340189881639747365248788048662076913003130071131663108327512733069326012197090400460556913764055449808782413120, 19009), (3047, 4414103171422717935355962509499454349778622162400781459697552399266028998073052301861983592098091170325382922374854427709365699448595338643109175128231512749180137239630552350668736159301331619783913278988698914397585103122958242938481707043703775239751032229629764002510837997551552225537574210211945427154275570535341744487610518195389286251136162913276874919649834195343551175847369401914668124502580414188411921940167995410000017796803115148941554642484534655371013695818145603303564888547079314332213882853124811024475730089466430117462078329371553861038010496072275843988120946471902434970719656034482802077255302581089149251082976, 27941), (27093, 9154611756214756724173885190408003872449591269073102605228456275421208215932565362931929654546649304023236344043061900343945422952312397120822618708723071089543994689417534274219382267837418988544430955958634578186146315678653949605935409450055790001104946147407316311473901552255789990255560458743971937801679393705446136261518016083185450683814066644274897534221110708848082023454498620988462247604771107063854440837945572552841406526401192557118031116749129168215879638214765494261573532277267248651864394801267996413906424450730419095713253333326504619013654894156288241737988067918591507737206648058569934516619420144623505377301435668514418593118878788775849264442773570236710982356483749339325612961955144121852617030353522266206195503391667491427262341962604316852915673071607898002570374470506997388337604296115573269049069634099324411619052448132528877435091667009229816989818556680426118774810238582636027323802599258271991479814852819141878003265064480606587244021927725713293228979923827422432692586158272135063549520191382577769000483431081463036690550524564226586425639020224650313666850943741943605246548446573870629218059701374187171356525816670387118159122398327173724524855658200110122522835176190387328244551014672164462460351372690457712069935724023091919036138410906797524707392410554446350077959242405947099126465838760766371777403033146251749502951971723164017865200568964463774297505017369007733498550947322388608760212335940368621783904555284384376776656261924863794343796815840394007873484565022848579462774052069439946777630573102979496590395316870340899551813282502986710070529378861792991385680534480763081222794445860234260101963233469819968478267781058165962215892733089244018231780105097548621006518924522684510451706606468473417782105562726421667458599325050626566145642109892327168775105402123881849220660482291948715812488950704140069539809853344947732388220095254658324470691606583872184849553953678352230667797760550750875445274878011552908141893541049214761478631614429073173072195839699424914223620432036633802986310860934484009114489007981128832162565709338385636160750356924485343604148697926502326166202557944994913633051828299661050405190916615302885951550480867328010617078304297055489653587862296405779015531981276461702240597546551137530304640351560899721596431710387198320317078019194398346106906325232766448980878644774607110433151004714381896844981823117568831262694359188988036994358418407531621088012313911112990787883908629473366729105235570919108365315772383671485216041535895199802233506396125361100590961904686232499367884224371237416713503169202893109931633850881704747136301856000860027043777582090218562843855449359939394306400414888273691232591121594524381819354582423430557415390250709297250916474909569851542211629963074881157328576497818802346387745923866756229123554832128989541520169936300953836300235389379093109442248393586494022605971670012623627311681211479804894428255735216832312332374587671329106796684022978470999078866754294893462641324866080667457196130998327268153752398794195850817076787793178090421859530598534071035337698763058968997892119530295325366370181024862996688996982218234484156138212120039174745114551380799834389352242746434596156561884802858552848039130654598584670423370789192360682663573402610067394573907023581267337444561887066225448640531109903737583527982043515262559110647745958317794321134493638412203902264050559048131283893050978643459005295587397025818844745289630423132369876077023573075795101695741941448957492692770541027257813143549818083247077466563300619633483770879467622427653718311051255568315886707370049330370551248083587163093648392436402538080835372938539661876694968429300607645700887451607717345890164088866738067437705736191409017874160533226574366616228364590208669132008603977373406173169617176940813788990290600726024523687722649543950416403252632629816054630374545316484236530285427928212536677046788146607820784957497688177505215507738764368094945972293925768102942894343922075951950584747843163041482179651582945321367224573871167076773239474546718093054690180737239167052175372000610893947129090802650539145357698139189391292101318833102423529064084510914322440126808385923038318201245755676704650611731596292583717304379370256996717858556466693113975077196901855204797418153369689670038673829781023407381326668723988156703032126856483599703246194765161592028779525610900396244517331650235058027054924312880572459575090013084993690584284681466416902902178987116510671639573471785558879473018150310384889626008363718980810299980477673370182512022494547611737471877682888208577935567297869927069037836778041611528430972865356012323596536257940865191759958191141927469705717229297160293645616965252935768838221069724045314321468122778102190272203721595427118234293979687595632013680647352722589129686173006256611741794504701897170430155303809328057620955332830967596645368594105246945340269177608454700950981542453098799391204902996079682585726077788735323172833669157208933105328320688115165403826545598927201627249410032419171147416036060482494310313973399963662345404911693098014230729136599941932163456611595895059104775163455217728743575034276058374708178334997147073744767691582680892897199796122494961096167960722019157173361146936811991971390168385637304432676953904476762445279910913171572513177072541852580653529021831314795629186219681562085784871790357946471666771284027378207178520108478298275531913586518715536383856596319509987179659668437785231444827668882063238119727411375182795461735962704177295871116919234266198086260511993082345239690462198949212239357280276703513750501938682329025159521973018772292717925652964949167, 313721)]

当我增加限制时,我可以找到第四个例子,其中质数为3523969.在线整数百科全书中,此类对的索引顺序为A075702.该参考文献并未指出该序列是否为无限.

python质数列_Python-质数和斐波那契数列相关推荐

  1. python编写递归函数和非递归函数、输出斐波那契数列_python 入门之斐波那契数列递归表达式算法和非递归算法...

    题目: 斐波那契数列是一组有规律的数列:1,1,2,3,5,8,13,--..,那么我们怎么用python 来完成此算法,并求出第200位的值是多少 1.python 递归表达式实现: def fib ...

  2. python利用递归函数实现斐波那契数列_Python递归及斐波那契数列

    原博文 2016-07-01 23:30 − 递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ...

  3. python利用列表计算斐波那契数列前30项并输出_python 题目:斐波那契数列计算;题目:站队顺序输出;题目:合法括号组合的生成;题目:用户登录(三次机会)...

    斐波那契数列计算 B 描述 斐波那契数列如下: F(0) = 0, F(1) = 1 F(n) = F(n-1) + F(n-2) 编写一个计算斐波那契数列的函数,采用递归方式,输出不超过n的所有斐波 ...

  4. Python练习案例(二)——斐波那契数列

    前言 大家好,今天我们主要练习的就是斐波那契数列,相信很多同学都对这个数列有一定的了解,今天就来试一试用python来写出斐波那契数列,并且画出他的图像. 正文 大家知道斐波那契数列其实是有规律的,如 ...

  5. python程序题斐波那契数列_Python编程题9--斐波那契数列

    题目1 已知一个数列:1.1.2.3.5.8.13.--,其规律为从第3项开始,每一项都等于其前两项的和,这个数列就是斐波那契数列. 请求出符合斐波那契数列规律的第11项. 代码实现--非递归 def ...

  6. python生成斐波那契数列通项公式_Python生成器实现斐波那契数列

    比如,斐波那契数列:1,1,2,3,5,8,13,21,34.... 用列表生成式写不出来,但是我们可以用函数把它打印出来: def fib(number): n, a, b = 0, 0, 1 wh ...

  7. python学习-综合练习三(斐波那契数列、阿姆斯特朗数、//和/、十进制转二进制bin、八进制oct、十六进制hex、进制转换源码、python中::和:的区别)

    文章目录 斐波那契数列 阿姆斯特朗数 十进制转二进制bin.八进制oct.十六进制hex 补充进制转换源码 python中::和:的区别 说明:本篇博文的知识点大部分来自 Python3 实例 斐波那 ...

  8. python实现连续数列相加_技术 | Python经典面试题解析实现斐波那契数列

    黑马程序员 微信号:heiniu526 传智播客旗下互联网资讯,学习资源免费分享平台 大家在面试过程中经常会考到斐波那契数列,斐波那契数列(Fibonacci)最早由印度数学家Gopala提出,而第一 ...

  9. python魔术方法(进阶)斐波那契数列

    文章目录 特殊属性 查看属性 实例化 可视化 hash bool 运算符重载应用场景 容器相关方法 可调用对象 上下文管理 上下文管理的安全性 方法的参数 contextlib.contextmana ...

  10. js输出100以内的质数_JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例...

    这篇文章主要介绍了JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 斐波那契 ...

最新文章

  1. NYOJ题目1048破门锁
  2. vb红绿灯自动切换_什么是自动驻车
  3. Struts2中OGNL,valueStack,stackContext的学习
  4. tinyhttp源码阅读(注释)
  5. 双绞线直连法如何才能使两台电脑实现共享
  6. PC介绍之PCIE、总线、内存、电源
  7. 【Python】AttributeError: ‘DatetimeProperties’ object has no attribute ‘weekday_name’ 的解决方法
  8. 为什么要在WebAssembly中使用Rust?
  9. MVVM下拉框绑定触发事件
  10. 我的第一个python web开发框架(23)——代码版本控制管理与接口文档
  11. 开课吧:一文解析Nexus是什么
  12. 李宏毅机器学习——无监督学习(三)
  13. 母版页Master中Html控件img,a,javascript相对路径问题
  14. 限流, 熔断,降级笔记
  15. gateway网关_公司要把网关Zuul换成Gateway,再难也得顶上
  16. arduino 有源 蜂鸣器_Arduino入门教程--第八课--用蜂鸣器模拟警报器
  17. php元万亿单位转换,单位换算
  18. SpaceEye :12种地球实时卫星照片壁纸
  19. latex表格横向、纵向合并问题
  20. 『教师节』程序猿用文心大模型带你一键加速祝福,祝老师们节日快乐

热门文章

  1. 安卓自定义View进阶-事件分发机制详解
  2. 魔影微型投影机教你辨析各类投影机信号接口
  3. 批量上传图片 java_java批量上传图片
  4. D. Easy Problem(简单DP)
  5. 异地办学“大清理”,多所研究院被撤,“国字号”大学何去何从?
  6. 中秋送礼---IP地址之快速子网划分法
  7. CentOS挂载硬盘操作步骤
  8. java正则校验的坑正则校验公式正确性
  9. Odoo 14 手册 优惠券与促销
  10. Deep Photometric Stereo Network