荐 python:使用循环找一定范围内的素数

2022-08-09,,,

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

《荐 python:使用循环找一定范围内的素数.doc》

下载本文的Word格式文档,以方便收藏与打印。