0
点赞
收藏
分享

微信扫一扫

【Python训练营】Python每日一练----第4天:等差素数列


【Python训练营】Python每日一练----第4天:等差素数列_开发语言


????????????????????????
????????????Hello,大家好我叫是Dream呀,一个有趣的Python博主,多多关照????????????

????​​​入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!????????????​​​ ????​​最后,愿我们都能在看不到的地方闪闪发光,一起加油进步????????????​​​ ????????????“一万次悲伤,依然会有Dream,我一直在最温暖的地方等你”,唱的就是我!哈哈哈~????????????
????????????✨✨✨




Python每日一练:


  • ​​题目描述​​
  • ​​解题思路​​
  • ​​源码分享​​
  • ​​学习总结​​
  • ​​????往期文章----好文推荐????​​


题目描述

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

2,3,5,7,11,13,…2,3,5,7,11,13,… 是素数序列。 类似:7,37,67,97,127,1577,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。

上边的数列公差为 3030,长度为 66。

20042004 年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。 这是数论领域一项惊人的成果!

有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:

长度为 10 的等差素数列,其公差最小值是多少?

运行限制

最大运行时间:1s

最大运行内存: 128M

解题思路


  • 首先写出一个函数来确定是否为素数,然后创建一个空列表存储每次的差值
  • 找第一个素数,然后再​​由大到小取最小的差值​​​,遍历此差值下的后9个数据,​​for k in range(i+j,i+j*11,j):​​如果都是素数则满足条件,跳出此素数的循环,遍历下一个素数。
  • 最后如果num不为空,则用用min()取num列表中最小的数据。

源码分享

# 一万次悲伤,依然会有Dream,我一直在最温暖的地方等你!
# @Time : 2022/1/20 20:40
# @Author : 是Dream呀!
# @File : 等差素数列.py
# 设置函数判断是否为素数。
def sushu(n):
k = int(n ** 0.5)
for i in range(2,k+1):
if n%i == 0:
return False
return True
num = []
for i in range(3,100,2):# 第一个素数
if sushu(i):
for j in range(1,1000):# 设置一个方差
a = 0 # 设置参数a来统计等差素数的个数
for k in range(i+j,i+j*11,j):# 后9个数
if sushu(k):
a += 1
if a == 9:
num.append(j)
break
if len(num) == 0:
print('no')
else:
print(min(num))

学习总结

1.​​for else​​结构中,for循环遇到break退出之后就不会再运行else语句,只有在for循环中中没有break结束语句,才会运行else语句。

2.判断素数时,遍历的范围大小:​​k = int(n ** 0.5) for i in range(2,k+1):​​这样设置,可以大大减少运行时间,更好的满足所需时间限制。


???????????? 好啦,这就是今天要分享给大家的全部内容了

❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~

【Python训练营】Python每日一练----第4天:等差素数列_python_03



举报

相关推荐

0 条评论