python找与7相关的数_查找连续有七个“ 7”的所有10位质数-Python

本文介绍了一种方法来生成所有10位数中,中间连续7个7的数字列表,并检查它们是否为质数。通过优化算法,减少了计算时间和内存消耗,最终找到了3420个符合条件的质数。
摘要由CSDN通过智能技术生成

因此,正如标题中所述,我正在尝试生成所有10位素数的列表,它们连续有7x7。更确切地说,我的意思是可以写成如下数字:xxx7777777,xx7777777x,x7777777xx,7777777xxx。

我的想法是生成所有这些数字的列表,然后检查其中一个是质数。代码如下:

importtimedefGeneratingTable():A=[]foriinrange(1,10):forjinrange(0,10):forkinrange(0,10):A.append(i*1000000000+j*100000000+k*10000000+7777777)foriinrange(1,10):forjinrange(0,10):forkinrange(1,10):A.append(i*1000000000+j*100000000+77777770+k)foriinrange(1,10):forjinrange(0,10):forkinrange(1,10):A.append(i*1000000000+777777700+10*j+k)foriinrange(0,10):forjinrange(0,10):forkinrange(1,10):A.append(7777777000+i*100+j*10+k)A=list(set(A))# I want to get rid of duplicats hereprint(len(A))returnAdefifPrime(n):# Maybe I can use more efficient algorithm?Prime=1i=2whilei*i<=n:ifn%i==0:Prime=0breaki+=2ifPrime==1:return1else:return0defHowMany():counter=0A=GeneratingTable()foriinrange(len(A)):ififPrime(A[i]):print(A[i])counter+=1returncounter

start=time.clock()print(HowMany())end=time.clock()time=end-startprint(time)

我确定我通过这种方式得到的质数很高-它是2115,列表A中的元素数是3159。我的函数“ GeneratingTable”还是检查该数是否为质数是问题吗?

解决方案

您的质数函数是错误的,应将其增加i1,而不是2,否则您缺少一些质数。

然后,您应该set在生成表时直接添加到a而不是创建列表,这样可以节省内存和CPU时间(也正如Chris所评论的那样,您正在执行从0或1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值