Python计算连续的5个质数
描述:
获得用户输入数字N,计算并输出从N开始的5个质数,单行输出,质数间用逗号,分割。
注意:需要考虑用户输入的数字N可能是浮点数,应对输入取整数;最后一个输出后不用逗号。
解决步骤
1,如何判断质数
def prime(m):
for i in range(2,m):
if m % i ==0:
break
else:
print(m,end=",")
在这里,利用了for-else的结构,还有break语句实现了:如果是质数,将输出这个功能
2,根据要求输出5个
def prime(m):
n=1
while n<6 :
for i in range(2,m):
if m % i ==0:
m=m+1
break
else:
n = n +1
print(m,end=",")
m=m+1
m= eval(input())
prime(m)
这里有个问题,就是末尾的",".这点让人不愉快.
但也可以创建一个list[], 把5个数字放进去, 最后再按格式输出.
3,答案的思路
def prime(m):
for i in range(2,m):
if m % i == 0:
return False
return True
n = eval(input())
m = int(n)
m = m+1 if m < n else m
count = 5
while count > 0:
if prime(m):
if count > 1:
print(m, end=",")
else:
print(m, end="")
count -= 1
m += 1
这段代码的优秀之处,是内部高度的耦合.模块之间耦合度很低.
它的函数只判断了"是否为质数",而输出/数量等都不关心,返回值为True/False.
还有一些很不错的细节:如
m = m+1 if m < n else m
自己的错误
while函数使用有误,一开始的代码
def prime(m):
n=1
while(n==5):
for i in range(2,m):
if m % i ==0:
m=m+1
break
else:
.......
导致于while判断一直为False,无法进入循环语句.