python中求素数的算法,超简单思路,一看就会

本文章转载于慕课网手记,作者:Gorit ,本人加入了自己理解!

点击链接既可以跳转:点击

一、什么是素数?
素数就是质数,通俗点说就是只能被1和其本身整数的数就是素数(1除外)

举个例子:
2,3,4,5,6当中,根据上面的定义,2只能被1整数(因为任何数和1整除都都等于它本身)
python中求素数的算法,超简单思路,一看就会_第1张图片二、素数计算思路

2/1=2
2/2=1
所以 2 是素数

3/1 =3
3/2 =1.5
3/3 = 1
所以 3 也是素数

我们再看 4
4/2 = 2
因为 4 不仅能被 1 和 其本身整除,还可以被2整除,所以4不是素数,所以后面都可以不用计算了

后面以此类推
三、上手编程

这里给大家提供两种思路,仅供参考

第一种编程思路:我们给定一个数字 x ,然后我们利用 2 ~ (x -1) 之间的每一个数字与 x 进行整除,如果出现可以被整除的情况,则这个数字就不是素数,然后循环就可以跳出去
# 求 a~b之间的素数
def su(a,b):
    for i in range(a,b):
        n = False #默认不是素数,如果是素数,跳出循环
        for j in range(2,i):
            if i%j == 0:
                n = True
                break
                
        if n == False:
            print(i,end=" ")

su(100,200)
# ans 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 
# 179 181 191 193 197 199

不过慕课网也是没谁了,复制也不好复制,完了之后,复制一次就出现一次链接,唉真烦;

个人理解,非常详细,有不懂的留言问我!!

#创建方法,定义形参!
def test4(s,n):
    for f in range(s,n):#这个就是区间范围,在后面调用参数设置参数的话,会给与出来!
        t = False #设置默认变量t ,t的值为False;不用想太多,只单单认为他是一个变量
        for j in range(2,f):#在创建一个循环,因为质数2和1都不属于质数,所以从2开始,到f结束。f就是上一个for循环的结果
            if f%j==0:#f就是我们要求的区间中的数,拿f除以2-f之间的所有数,余数若等于0,则会继续向下执行,如果不是,则不会执行一下的语句
                t=True#若余数则是0.则从新赋值t为True
                break#跳出循环
        if t ==False:#素数是不可能执行 t=True这个语句,所以t = False,一直是t = False,用if判断,当t ==False时,执行输出语句#如果t=True,那么就不会执行
            print(f,end=" ")#f为满足t ==False 输出,end这里是换行,并且“ ” 是保持空格
test4(100,200)#调用函数,设置参数!!

你可能感兴趣的:(python,算法,python,数据挖掘,经验分享)