连续质数计算

描述

 补充编程模板中代码,完成如下功能:

获得用户输入数字N,计算并输出从N开始的5个质数,单行输出,质数间用逗号,分割。

注意:需要考虑用户输入的数字N可能是浮点数,应对输入取整数;最后一个输出后不用逗号。

输入输出示例

输入:12

输出:13,17,19,23,29

 1 def prime(m):
 2     if m <= 2:
 3         return 2
 4     else:
 5         while True:
 6             for i in range(m - 2):
 7                 if m % (i + 2) == 0:
 8                     break
 9             else:
10                 return m
11                 break
12             m = m + 1
13 
14 n = eval(input())
15 n = int(n)+1
16 a = prime(n)
17 b = prime(a + 1)
18 c = prime(b + 1)
19 d = prime(c + 1)
20 e = prime(d + 1)
21 print("{},{},{},{},{}".format(a, b, c, d, e))

参考答案:

 1 def prime(m):
 2     for i in range(2,m):
 3         if m % i == 0:
 4             return False
 5     return True
 6 
 7 n = eval(input())
 8 n_ = int(n)
 9 n_ = n_+1 if n_ < n else n_
10 count = 5
11 
12 while count > 0:
13     if prime(n_):
14         if count > 1:
15             print(n_, end=",")
16         else:
17             print(n_, end="")
18         count -= 1 
19     n_ += 1

参考答案后改进自己的代码:

 1 def prime(m):
 2     if m <= 2:
 3         return 2
 4     else:
 5         while True:
 6             for i in range(m - 2):
 7                 if m % (i + 2) == 0:
 8                     break
 9             else:
10                 return m
11                 break
12             m = m + 1
13 n = eval(input())
14 n = int(n)+1 if n > int(n) else int(n)
15 n = prime(n)
16 for i in range(4):
17     print(n,end = ",")
18     n = prime(n+1)
19 print(prime(n))

1、两个自定义的函数功能不同,答案中的函数只是返回是否为质数;而本人写的函数是返为大于等于n的第一个质数,感觉还是答案的方法好理解。

2、关于浮点数的处理方面,自己写的第一个代码是有问题的,参考了答案的方法。

猜你喜欢

转载自www.cnblogs.com/chezxj/p/12535444.html