补充编程模板中代码,完成如下功能:
获得用户输入数字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、关于浮点数的处理方面,自己写的第一个代码是有问题的,参考了答案的方法。
原文:https://www.cnblogs.com/chezxj/p/12535444.html