PAT乙级1013数素数(python实现)

本文分享了一种生成并打印素数的算法,使用Python实现。算法首先判断一个数是否为素数,然后生成素数列表,最后按照特定格式输出。作者在文中提到算法得分19分,并邀请读者提出改进建议。
摘要由CSDN通过智能技术生成

题目描述

在这里插入图片描述

代码实现

from math import sqrt
start, end = map(int, input().split())
 
# 判断是不是素数
def isPrime(number):
    if number > 1:
        if number == 2:
            return True
        if number % 2 == 0:
            return False
        for x in range(3, int(sqrt(number) + 1), 2):
            if number % x == 0:
                return False
        return True
    return False

# 解题思想是:把素数加入列表,知道扫描到end的位置,然后从start到end切片

result = [2]
i = 3

while True:
    if isPrime(i):
        result.append(i)
        if len(result) == end:
            break
    i += 1

result = result[start-1:]

# 按照要求输出:每行十个,行末无空格
length = len(result)
if length ==1:
    print(result[0])
else:
    for c_i in range(length-1):
        if (c_i+1)%10==0:
            print(result[c_i])
        else:
            print(result[c_i],end=" ")
    if (c_i+2)%10==0:
        print(result[c_i+1])
    else:
        print(result[c_i+1],end="")

结果

在这里插入图片描述
真的累了…改正了判断素数的算法,最高19分,解题算法+python自身带bug,发出来给大家做参考,如果有朋友了解如何改进,欢迎留言!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值