素数的定义:是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
即只能被1和自己本身整除的数
思路及步骤
给定一个大于2的整数n
令i=2
用n除i,得到余数r
判断r==0是否成立,如果成立则n不是素数,结束算法;如果不成立则将i的值+1仍然用i表示
判断i>(n-1)是否成立,如果成立则n是素数;否则返回第3步
流程图
使用while语句实现
n = int(input("请输入一个数字:"))
i = 2
while True:
if n < 2:
print("请输入一个大于或者等于2的整数")
break
elif n == 2:
print("{}是素数".format(n))
break
elif n > 2:
r = n % i
i += 1
if r == 0 or i > n-1:
if r == 0:
print("{}不是素数".format(n))
break
else:
print("{}是素数".format(n))
break
执行步骤
如果n=1则退出
如果n=2则输出2是素数
如果n=3则按照以下步骤执行
1,i=2 n=3 判断n>2满足条件执行r=3%2=1
2,i增加1 i=3
3,判断r == 0 结果为False i > n-1 3>3-1 结果为True 整体结果为True继续执行if下面语句
4,判断r==0结果为False则执行else输出3是素数
如果n=4则安之以下步骤执行
1,i=2 n=4判断n>2满足条件 执行r=4%2=0
2,i增加1 i=3
3,判断r==0结果为True整体结果为True无需判断i>n-1整体结果为True
4, 判断r==0所以大于4不是素数
以此类推
输入任何数字只要可以被2至输入的整数之间的任意一个数整除即余数为0则可以判断为非素数
直到被除数增加到与输入的数字一致之间还没有出现可以整数的被除数则判断该数为素数
使用while循环需要把被除数i从2开始没执行一次+1 下面使用for循环实现,i的取值为2至输入的整数n
n = int(input("请输入一个数字:"))
for i in range(2, n):
r = n % i
if r == 0:
print("{}不是素数".format(n))
break
else:
print("{}是素数".format(n))
实现的效果是一样的
本列使用for循环被除数为从2开始至n-1,如果之间有能整数的被除数则可以判断数字不是素数
如果一直到n-1还是没有被整除则认为输入的n为素数
注意else的位置是与for循环同级而不是与if同级,如果以if同级则在第一次循环i=2的时候就通过余数来判断一个数是奇数还是偶数了
注意:在python中else不一定跟在if后也可以写在for后面