《Python语言程序设计》学习:连续质数计算

题目内容:

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

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

输入格式:
输入一个整数或浮点数

输出格式:
单行输出,每个数字之间以逗号隔开,行末没有逗号

输入样例:
12

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

思路

需要从三个方面来进行考虑:

- 输入数字的处理:

1、浮点数的判断:可以用type(num) == float或isinstance(num,float)判断输入是否为浮点数
2、浮点数的取整:这里不能直接用int(num),因为int(num)会直接将小数点后的数字舍去;而应使用int(num)+1,取大于该浮点数的整数(一开始不知道int(num)可以直接取整,想的是用前面课程里的round函数取尾后再int,而round(num,0)相当于四舍五入)

- 质数的生成:

1、定义一个函数判断某数m是否为质数:使用一个变量isPrime来标记是否为质数,初始值设为True。由于需要使用2-(m-1)之间的数来判断是否可以整除,因此这里可以从m<2、m=2、m>2三个方面来考虑。使用循环来判断m是否可以被除1和自身以外的数整除,如果可以,isPrime变为False,循环结束;否则isPrime始终为True。最后返回isPrime的值作为num是否为质数的结果。
2、得到从num开始的5个质数:以num为起始值,通过循环得到从num开始的5个质数,并将其通过方法append放到列表中。使用计数器counter来统计得到质数的个数,初始值设为0,每得到一个质数,counter加1,当counter=5时,循环结束。

- 质数的输出:

最终得到的质数存放在列表中,而题目要求输出五个数字,且以逗号分隔。可以有两个思路:
(1)每次得到一个质数之后就直接print,不将其放入列表储存,这样前4个数字print输出时使用end=",",第五个数字则可以直接print输出,使用if判断语句就可以实现
(2)如果将五个质数储存在列表中,则可以使用之前学习的字符串处理方法:str.join(iter)。由于该方法用于字符串,因此需要使用列表解析将元素从int变为str:strPrimes = [str(i) for i in primes],等同于如下的代码:

strPrimes = []
for i in primes:
	strPrimes.append(str(i))

或者也可以在生成质数时直接以字符串的形式存放到列表中。

代码实现

#判断一个数是否为质数
def isPrime(m):
    isPrime = True
    if m < 2:
       isPrime = False
    elif m > 2:
        for i in range(2,m):
            if m % i == 0:
                isPrime = False
                break
    return isPrime
#读取输入
num = eval(input())
#浮点数处理
if isinstance(num, float):
    num = int(num) + 1
#质数生成
count = 0
primes = []
while count < 5:
    if isPrime(num):
        primes.append(str(num))
        count += 1
    num += 1
#输出结果
print(",".join(primes))

另外,关于质数判断方法还可以简化,只需判断能否被 2 ~ 根号m之间的每一个整数整除就可以了。

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值