????????????????????????
????????????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):
这样设置,可以大大减少运行时间,更好的满足所需时间限制。
???????????? 好啦,这就是今天要分享给大家的全部内容了
❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~