洛谷题单3-P5723 【深基4.例13】质数口袋-python-流程图重构

题目描述

小 A 有一个质数口袋,里面可以装各个质数。他从 222 开始,依次判断各个自然数是不是质数,如果是质数就会把这个数字装入口袋。

口袋的负载量就是口袋里的所有数字之和。

但是口袋的承重量有限,装的质数的和不能超过 LLL。给出 LLL,请问口袋里能装下几个质数?将这些质数从小往大输出,然后输出最多能装下的质数的个数,数字之间用换行隔开。

输入格式

一行一个正整数 LLL

输出格式

将这些质数从小往大输出,然后输出最多能装下的质数个数。

输入输出样例

输入

100

输出

2
3
5
7
11
13
17
19
23
9

说明/提示

数据保证,1≤L≤1051 \le L \le {10}^51L105

方式

代码

class Solution:
    @staticmethod
    def oi_input():
        """从标准输入读取数据"""
        num = int(input())
        return num

    @staticmethod
    def oi_test():
        """提供测试数据"""
        return 100

    @staticmethod
    def solution(num):
        from math import sqrt

        prime_nums, sum = [], 0

        for i in range(1, num + 1):
            if i in [2, 3, 5]:
                prime_nums.append(i)
                sum += i
            if i > 5:
                is_prime = True
                for i2 in range(2, int(sqrt(i)) + 1):
                    if i % i2 == 0:
                        is_prime = False
                        break
                if is_prime:
                    prime_nums.append(i)
                    sum += i
            if sum > num:
                prime_nums.pop()
                break

        for i in prime_nums:
            print(i)
        print(len(prime_nums))

oi_input = Solution.oi_input
oi_test = Solution.oi_test
solution = Solution.solution

if __name__ == '__main__':
    num = oi_test()
    # num = oi_input()
    solution(num)

流程图

开始
输入num
初始化primes=[], total=0
循环n从2到num
n是素数?
total + n ≤ num?
添加n到primes, 更新total
终止循环
输出primes及其属性
结束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值