洛谷UVA12995 Farey Sequence(欧拉函数,线性筛)

洛谷题目传送门

分数其实就是一个幌子,实际上就是求互质数对的个数(除开一个特例(1,1))。因为保证了a<b,所以我们把要求的东西拆开看,不就是i=2nϕ(i)吗?

关于通过筛素数线性求欧拉函数的一点思路总结在蒟蒻的blog

剩下的就是记一个前缀和了。

#include<cstdio>
#define R register
const int N=1000001;
int pr[N],phi[N];
long long ans[N];
bool f[N];
int main(){
    R int n,i,j,k,p=0;
    for(i=2;i<N;++i){
        if(!f[i])phi[pr[++p]=i]=i-1;
        ans[i]=ans[i-1]+phi[i];
        for(j=1;j<=p&&(k=i*pr[j])<N;++j){
            f[k]=1;
            if(i%pr[j])
                phi[k]=phi[i]*(pr[j]-1);
            else{
                phi[k]=phi[i]*pr[j];
                break;
            }
        }
    }
    while(scanf("%d",&n),n)
        printf("%lld\n",ans[n]);
    return 0;
}
posted @   Flash_Hu  阅读(451)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示
剑桥
17:14发布
剑桥
17:14发布
5°
西风
7级
空气质量
相对湿度
34%
今天
多云
-3°/5°
周六
-1°/3°
周日
-2°/7°