数论题

给定质数集合 S 问所有不包含 S 外质因数的数中有多少 n|S|{1,2,3,4,5},n[1,264]Z

meet in the middle。我先算了一下,在 n=264 的情况下,答案大约 3×107 个。双向搜索后,空间可以接受。

假设这个质数集排降序过后是 {p1,p2,p3,p4,p5},即满足 p1>p2>p3>p4>p5(这里取了 |S| 最大的情况,其他情况类推)。

p1,p2,p3 分为一组,暴力求出它们组合后得到小于等于 n 的答案,构成集合 A1。剩余的一组,也求出来,构成集合 A2。然后取长度较小的一组,遍历,lower_bound 求每个对应的答案数。

整个算法的时间复杂度是 O(log|S|2n+lsmallerlogllarger),其中 lsmaller 指较短数组的长度,llarger 则是较长的。

posted @   robinyqc  阅读(29)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示