欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

荐 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