【Python】编写一个判断素数的函数,并调用求出1至100之间的所有素数

目录

一.正确代码

(一)法一

(二)法二

  运行结果 

二.遇到的问题

(一)初版代码

(二)教训


一.正确代码

(一)法一
def su(x):                           
    for i in range(2,x):             
        if x%i==0:
            return False
    return True

if __name__=="__main__":
    n1=int(input('输入取值范围下限n1: '))
    m1=int(input('输入取值范围上限m1: '))
    for x in range(n1,m1):
        if su(x) == True:
            print(x)
(二)法二
def sushu (n,m):
    for g in range (n, m+1):
        flag = True                  
        for i in range(2,g):
            if g%i == 0:
                flag =False          #使用flag来控制循环的退出条件
        if flag == False:                
            continue
        print(g)

if __name__=="__main__":
    n1=int(input('输入取值范围下限n1: '))
    m1=int(input('输入取值范围上限m1: '))
    sushu (nl,ml)

  运行结果 
输入取值范围下限n1: 1
输入取值范围上限m1: 100
1
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
​

 

二.遇到的问题

(一)初版代码如下
        由此可见没有掌握好continue的用法,代码运行不出正确结果
def sushu (n,m):
    for g in range (n, m+1):
        for i in range(2,m):
            if g%i == 0:
                continue
            print(g)

if __name__=="__main__":
    nl=int(input('输入取值范围下限n1: '))
    ml=int(input('输入取值范围上限m1: '))
    sushu (nl,ml)

(二)教训

1. 要将判断素数的步骤单独成一个函数

        函数:使代码效率最大化,减少冗余

2. continue对外层循环不造成影响

        在上面这个错误的代码中,continue只对 " for i in range(2,m): "产生影响,                

        对” for g in range (n, m+1): "不造成影响

3.要学会使用flag


ଘ(੭ˊᵕˋ)੭* ੈ✩

print("感谢大家的支持!")

你可能感兴趣的:(python,开发语言)