小x的质数

#include<iostream>
#include<cstdio>
using namespace std;
const int N=1e7+10;
void get_primes(int n);
int pre_sum(int l, int r);

int q;
bool st[N];
int primes[N], cnt;
int sum[N];

signed main()
{
	get_primes(N);//把非质数置为true 
	
	for(int i=0;i<cnt;i++)
	    for(int j=0;j<cnt&&primes[i]*primes[j]<N;j++)
	        st[primes[i]*primes[j]]=false;//把质数积置为false 
	
	st[1]=true;//前缀和,解决区间询问  
	for(int i=1;i<N;i++) sum[i]=sum[i-1]+(!st[i]);//false=0, true=1 
	
	cin>>q;
	while(q--)
	{
		int l, r;
		scanf("%d%d", &l, &r);
		printf("%d\n", pre_sum(l, r));
	}
}

void get_primes(int n)
{
	for(int i=2;i<=n;i++)
	{
		if(!st[i]) primes[cnt++]=i;
		for(int j=0;primes[j]<=n/i;j++)
		{
			st[i*primes[j]]=true;
			if(i%primes[j]==0) break;
		}
	}
}

int pre_sum(int l, int r)
{
	return sum[r]-sum[l-1];
}
基于机器学习进行贷款中风险预测的Python代码及详细文档和PPT(高分项目),个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于机器学习进行贷款中风险预测的Python代码及详细文档和PPT(高分项目)基于机器学习进行贷款中风险预测的Python代码及详细文档和PPT(高分项目)基于机器学习进行贷款中风险预测的Python代码及详细文档和PPT(高分项目)基于机器学习进行贷款中风险预测的Python代码及详细文档和PPT(高分项目)基于机器学习进行贷款中风险预测的Python代码及详细文档和PPT(高分项目)基于机器学习进行贷款中风险预测的Python代码及详细文档和PPT(高分项目)基于机器学习进行贷款中风险预测的Python代码及详细文档和PPT(高分项目)基于机器学习进行贷款中风险预测的Python代码及详细文档和PPT(高分项目)基于机器学习进行贷款中风险预测的Python代码及详细文档和PPT(高分项目)基于机器学习进行贷款中风险预测的Python代码及详细文档和PPT(高分项目)基于机器学习进行贷款中风险预测的Python代码及详细文档和PPT(高分项目)基于机器学习进行贷款中风险预测的Python代码及详细文档和PPT(高分项目)基于机器学习进行贷款中风险预测的Python代码及详细文档和PPT(高分项目)基于机器学习进行贷款中风险预测的Python代码及详细文档和PPT(高分项目)基于机器学习进行贷款中风险预测的Python代码及详细文档和PPT(高分项目)基于机器学习进行贷款中风险预测的P
### 关于蓝桥杯竞赛中的质数相关题目及解答 #### 质数拆分问题 在蓝桥杯竞赛中,涉及质数的题目通常考察选手对质数性质的理解以及编程实现能力。例如,在某一年的试题中提到将特定数值(如2019)拆分为若干个两两不同的质数之和[^4]。这类问题的核心在于如何高效生成质数列表并验证可能的组合。 以下是解决该类问题的一种通用思路: 1. **生成质数表**:利用埃拉托斯特尼筛法快速筛选一定范围内的所有质数。 2. **回溯算法**:通过递归的方式枚举满足条件的不同质数组合。 3. **优化剪枝**:为了避免重复计数,可以在递归过程中加入约束条件,比如仅考虑当前质数及其之后的质数。 下面是基于 Python 的解决方案示例代码: ```python def is_prime(n): """ 判断 n 是否为质数 """ if n < 2: return False for i in range(2, int(n**0.5)+1): if n % i == 0: return False return True def find_primes_sum(target, primes, start_index, path, result_set): """ 使用回溯法寻找目标值 target 的质数拆分方案 """ if target == 0: result_set.add(tuple(sorted(path))) # 添加有序路径至结果集 return for i in range(start_index, len(primes)): if target - primes[i] >= 0: find_primes_sum(target-primes[i], primes, i+1, path+[primes[i]], result_set) target_value = 2019 max_limit = target_value + 1 prime_list = [i for i in range(max_limit) if is_prime(i)] result_container = set() find_primes_sum(target_value, prime_list, 0, [], result_container) print(len(result_container)) ``` 上述代码实现了针对给定目标值 `2019` 寻找所有符合条件的质数拆分方式,并最终统计总数。 --- #### 求素数问题 另一类常见问题是直接求解某个区间内的全部素数或者判定单一数字是否为素数。此类问题可以通过多种方法来完成,其中较为高效的仍然是埃氏筛法或线性筛法[^2]。 下面是一个简单的例子展示如何使用埃拉托斯特尼筛法获取指定范围内所有素数: ```python def sieve_of_eratosthenes(limit): """ 埃拉托斯特尼筛法生成小于等于 limit 的所有素数 """ sieve = [True] * (limit + 1) sieve[0:2] = [False, False] sqrt_limit = int(limit**0.5) + 1 for current in range(2, sqrt_limit): if sieve[current]: for multiple in range(current*current, limit+1, current): sieve[multiple] = False return [num for num, is_prime in enumerate(sieve) if is_prime] # 测试函数 upper_bound = 100 all_primes = sieve_of_eratosthenes(upper_bound) print(all_primes) ``` 此代码片段展示了如何构建一个小于等于输入上限的所有素数列表。 --- #### § 相关问题 § 1. 如何进一步优化大范围素数生成的速度? 2. 如果允许重复选取相同大小的质数,则质数拆分的数量会发生什么变化? 3. 在实际比赛环境中,面对复杂度较高的质数运算时应采取哪些策略提高效率? 4. 对于某些特殊形式的大整数(如形似 \(p^n\) 或者其他幂次结构),是否存在更简便的方法判断它们是否为素数? 5. 当前主流程序设计语言对于处理超大规模数据类型的性能差异体现在哪里?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值