python蓝桥杯真题刷题打卡 | day8 | 埃式筛选

本文分享了五个编程题目,包括整数分解、带宽计算、纯质数判断、完全日期识别及字符串大写转换。通过Python和C++实现,涉及数论、日期处理和基础操作,适合编程初学者巩固基础。

1.整数分解

题目

在这里插入图片描述

解析

非常特别的思路,供大家参考
在这里插入图片描述
文章链接:
https://blog.youkuaiyun.com/m0_55148406/article/details/122580086

代码

#整数分解
print(2020*2019*2018*2017//4//3//2//1)
#输出结果:691677274345

2.带宽

题目

在这里插入图片描述

解析

首先把Mbps解释出来
Mbps = M bit per second
意思就是每秒传送200M bit
理论上可以无损传输
1Byte = 8 bit
也就是每秒 200除以8 就是MB

代码

print(200/8)  即 25MB

3. 纯质数

题目

在这里插入图片描述

解析

使用埃式筛选求得素数列表
利用python特点,对各个素数进行判断
埃式筛选代码如下
python:

# 埃式筛法
def su(n):
    # 初始化筛选数组
    num = [1 for i in range(n+1)]

    for i in range(2,n+1):
        if num[i] == 1:
            # 筛选过程
            j = i*i
            while j<n:
                num[j] = 0
                j+=i

    # 输出筛选结果
    for i in range(2,n+1):
        if num[i] == 1:
            su_list.append(i)

C++:

// 埃式筛法 
void judge_prime(bool is_prime[], int n) {
	// 初始化数组
	for (int i = 2; i < maxn; i++) is_prime[i] = 1;

	// 筛选过程
	for (int i = 2; i * i < maxn; i++) {
		if (is_prime[i] == 1) {
			// 将 i*i为初值,i的倍数全部排除  如果越界则退出
			for (int j = i * i; j < maxn; j += i) {
				is_prime[j] = 0;
			}
		}
	}

	// 输出筛选结果
	for (int i = 2; i < maxn; i++) {
		if (is_prime[i] == 1) cout << i << " ";
	}
}

代码

n = 20210605
su_list = []
su(n)
count = 0
# 质数序列
su_str = "2357"
for i in su_list:
    str_i = str(i)
    for j in range(len(str_i)):
        if str_i[j] not in su_str:
            break
        if j == len(str_i) - 1:
            count +=1

print(count)

4.完全日期

题目

在这里插入图片描述

解析:

时间类问题,使用datetime库函数
相关时间题目:
https://blog.youkuaiyun.com/lijiamingccc/article/details/123743136
在这里插入图片描述

代码

import datetime

start = datetime.datetime(2001,1,1)
end = datetime.datetime(2021,12,31)
gap = datetime.timedelta(days = 1)
count = 0

while start <= end:
    sum_ = 0
    for i in str(start).replace('-', '').split()[0]:
        sum_ += int(i)
    if sum_%(sum_**0.5) == 0:
        count += 1
    start += gap

print(count)

5. 大写 (纯纯的送分题有没有!!)

题目

在这里插入图片描述

代码:

print(input().upper())

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lijiamingccc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值