荐 python:使用循环找一定范围内的素数
程序员文章站
2022-04-19 13:17:49
python:使用循环找一定范围内的素数前言:什么是素数?素数又称质数。只能被1和自身整除,并且不为0和1的数我们称之为素数/质数。相信大家在学习python循环取素数的时候,一定遇到了这样或那样的问题,或者说只会使用for循环取素数。那么今天,给大家讲解一下方法和技巧!1、方法1(1) while循环lis1 = []i = 2# 首先要知道外循环是要判断的数字,而内循环则是外边数字与2-这个数字的判断while i <= 100: # 1、首先要知道0、1不是素数,所...
python:使用循环找一定范围内的素数
前言:什么是素数?素数又称质数。只能被1和自身整除,并且不为0和1的数我们称之为素数/质数。相信大家在学习python循环取素数的时候,一定遇到了这样或那样的问题,或者说只会使用for循环取素数。那么今天,给大家讲解一下方法和技巧!
1、方法1
(1) while循环
lis1 = []
i = 2
# 首先要知道外循环是要判断的数字,而内循环则是外边数字与2-这个数字的判断
while i <= 100:
# 1、首先要知道0、1不是素数,所以就从2开始直接判断
flag = True
# 2、接着定义一个布尔值为True,当为True的时候就是素数,否则不是
j = 2
# 3、定义计数器开始外循环
while j < i:
"""
1、因为任何数÷1都是本身,所以无法判断是不是素数,所以要从2开始
2、因为任何数÷自身都是1,所以也无法判断是不是素数,所以就不能是自身
3、那么最终的条件就是从2开始,小于i就是这个数字本身之间的数字
"""
if i % j == 0:
# 如果这个数可以被从2开始,到i本身之间的数整除,那么它就不是素数
flag = False
# 既然不是素数,那么我们就不能将它保存,所有将变量flag的值重新定义为False
break
# 既然能被整除,那么就证明不是素数,那么就没有必要继续往下循环
j += 1
# 当条件不成立的时候,继续修改计数器
if flag:
# 如果变量flag的值为True,那么证明它是素数
lis1.append(i)
# 那么就将它存储到列表中
i += 1
# 修改计数器,判断从2开始到条件范围内的整数
print(lis1)
# 最后将lis1列表中存储的素数都打印出来
(2) for循环
for i in range(2,100):
lange = True
for j in range(2,i):
if i % j == 0:
lange = False
break
if lange:
list3.append(i)
print(list3)
分析:
1、首先要知道除了0和1,能被1和自身整除的整数称之为素数
2、任何整数都能被1和自身整数,所以此刻我们需要转变思维,除了1和这个数之间的数,能被它整除的都不是素数
3、使用方法1找素数的时候,要先定义布尔变量为True,当能被1-自身之间的数整除,那么就说明不是素数,将True改为False,如果没有,那么就是True,则说明是素数,最后判断这个布尔变量,是True就将其存入列表
运行结果:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
2、方法2
(1) while循环
list2 = []
i = 2
while i <= 100:
j = 2
while j < i:
if i % j == 0:
break
j +=1
else:
list2.append(i)
i += 1
print(list2)
(2) for循环
list1 = []
# 首先0和1不是素数,那么就从2开始
for i in range(2,101):
"""
1、其次任何数÷1=自身,任何数÷自身=1,所以无法通过这两个线索去寻找素数
2、那么,换一种思路想,只能被1和自身整除的才是素数,那么能被1和自身除外的任何数整除,那么它就不是素数
3、 所以我们可以不从素数的线索下手,而从不是素数的线索下手
"""
for j in range(2,i):
# 如果能被从2开始到自身之内的数字整除,那么这个数就不是素数
if i % j == 0:
# 所以也就没有循环判断下取的必要了,就直接退出内循环,从外循环的下一个数继续循环
break
"""
1、首先要知道,当for循环未能正常结束,那么else不会执行,反之,就会执行
2、那么,当判断出不是素数的时候就会执行brak,使得循环提前结束,这样是不会执行else的,
i的值就不可能添加到列表中
3、反而,当是素数的时候,if语句就不会执行,也就是说break不会执行,那么循环就属于正常结束,
当正常结束后就会执行else,也就会将素数存储在列表中
"""
else:
# 将素数存储在列表中
list1.append(i)
# 最后输出列表中的元素——素数
print(list1)
分析:
1、首先要知道素数的定义
2、不用定义布尔变量
3、我们直接跟上那个思想,当数字能被2-自身之间的数整除,那么就是素数,就直接break,跳出内循环,继续外循环
4、当未能被2-自身之间的数整除,那么就表明是素数,此刻内循环会完全循环结束,循环结束后就会进入else语句,将素数存储
运行结果:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
3、总结
明显可以看出来for循环会比while循环代码量少的多,这就是for循环的优点:当已知循环次数,使用for循环会大大减少代码量。当然,只要只要你掌握了思想,
以上均为自己在学习python循环过程中所总结的知识点,希望能够帮上你们。当然,如果本篇文章有什么不完善的地方,或者对大家造成了误导,还请大家能够指出,谢谢!
本文地址:https://blog.csdn.net/abraham_ly/article/details/107156817