2024江苏省大学生程序设计大赛(JSCPC)热身赛题解(B)
题目大意:
求区间
解:
设
故原问题转化为求
首先
考虑欧拉函数的公式
注意到上式中
观察质数
-
若
的质因数中包含 的数时,设该数为 ,则 一定是一个合数(因为这个范围内的质数一定都是奇数,且每两个质数之差 ),故 的欧拉函数不是质数。 -
若
的质因数只有 或 ,设 ,- 若
,则 一定是3的倍数,且 同时又是右边的因子,故 的欧拉函数一定是合数,不是质数( 是 的倍数)。 - 若
,则 ,只有当 时 的欧拉函数是质数。 - 若
,- 若
,则 一定是2的倍数,且 同时又是右边的因子,故 的欧拉函数一定是合数,不是质数。
- 若
- 若
接下来讨论
int l, r;
// 返回0~x中欧拉函数是质数的数的个数
int ans(int x) {
if (x >= 6) return 3;
if (x >= 4) return 2;
if (x >= 3) return 1;
return 0;
}
void solve() {
cout << ans(r) - ans(l - 1) << '\n';
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效