【总结】素数与约数
埃氏筛
用素数筛合数,代码简单,拓展性强。复杂度
O
(
n
∗
l
o
g
l
o
g
n
)
O(n*loglogn)
O(n∗loglogn),可以看作常数较大的n。
运用:对于求[l,r]的素数,可以用[1,
s
q
r
t
(
r
)
sqrt (r)
sqrt(r)]的所有素数来筛区间[l,r],相比直接求[1,r]的线性筛更优,因为线性筛对每个数有且仅能筛一个数,而这个数很有可能不在区间内,是无意义的。
线性筛
复杂度O(n),每个数有且仅被筛一次,可以配合欧拉函数在线性时间内求出函数值。
欧拉函数的几个性质:
https://www.cnblogs.com/henry-1202/p/10246196.html
A.
给定整数N,求1<=x,y<=N且GCD(x,y)为素数的数对(x,y)有多少对。
GCD(x,y)即求x,y的最大公约数。
分析:本题配合线性筛,可以同时求出 ϕ ( n ) ϕ(n) ϕ(n)和 s u m [ n ] sum[n] sum[n](素数个数),然后找到两个互质的数x,y,x<=y,及质数k,xk<=n,则xk和yk就是一组数对。
B.
给定两个整数l,r ,求闭区间 [l,r] 中相邻两个质数差值最小的数对与差值最大的数对。当存在多个时,输出靠前的素数对。
1<=l<=r<=2147483647,r-l<=1e6
分析:如前所说,由于[l,r]范围很小,所以用埃氏筛可以避免线性筛到r,而是直接用质数来筛这个范围,时间复杂度大大减小。
C.
求不定方程:
1 x + 1 y = 1 n ! \frac{1}{x}+\frac{1}{y}=\frac{1}{n!} x1+y1=n!1
的正整数解 ( x , y ) (x,y) (x,y)的数目。
分析:
原方程变形可得
x
y
−
n
!
(
x
+
y
)
=
0
xy-n!(x+y)=0
xy−n!(x+y)=0
(
n
!
)
2
+
x
y
−
n
!
(
x
+
y
)
=
(
n
!
)
2
(n!)^2+xy-n!(x+y)=(n!)^2
(n!)2+xy−n!(x+y)=(n!)2
(
x
−
(
n
!
)
2
)
(
y
−
(
n
!
)
2
)
=
(
n
!
)
2
(x-(n!)^2)(y-(n!)^2)=(n!)^2
(x−(n!)2)(y−(n!)2)=(n!)2
所以说只需求得 ( n ! ) 2 (n!)^2 (n!)2的约数个数即可。
__EOF__

本文链接:https://www.cnblogs.com/cqbzly/p/17530407.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」