【题意】给定n,求Σφ(i),n<=10^10。

【算法】杜教筛

【题解】

定义$s(n)=\sum_{i=1}^{n}\varphi(i)$

杜教筛$\sum_{i=1}^{n}(\varphi *I)(i)=\sum_{i=1}^{n}\sum_{d|i}\varphi(d)=\sum_{i=1}^{n}\sum_{d=1}^{\frac{n}{i}}\varphi(d)$

根据$id=\varphi*I$,$\sum_{i=1}^{n}(\varphi*I)(i)=\frac{i(i+1)}{2}$

所以$s(n)=\frac{i(i+1)}{2}-\sum_{i=2}^{n}s(\frac{n}{i})$

然后递归进行即可,预处理前$n^{\frac{2}{3}}$项,则复杂度为O(n^(2/3))。

本质上是对于id=φ*I,其中I和id的前缀和都可以直接计算,所以可以用杜教筛处理φ的前缀和。

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int sq=100000,pre=5000000,MOD=1e9+7,inv=(MOD+1)/2;
int a[100010],phi[pre+5],prime[pre],tot;
ll N;
bool vis[pre+5];
int solve(ll n){if(n<=pre)return phi[n];if(~a[N/n])return a[N/n];int ans=n%MOD*((n+1)%MOD)%MOD*inv%MOD;//
    ll pos=2;for(ll i=pos;i<=n;i=pos+1){pos=n/(n/i);ans=(ans-1ll*(pos-i+1)%MOD*solve(n/i)%MOD+MOD)%MOD;}return a[N/n]=ans;
}
int main(){scanf("%lld",&N);phi[1]=1;for(int i=2;i<=pre;i++){if(!vis[i]){phi[prime[++tot]=i]=i-1;}for(int j=1;j<=tot&&i*prime[j]<=pre;j++){vis[i*prime[j]]=1;if(i%prime[j]==0){phi[i*prime[j]]=phi[i]*prime[j];break;}phi[i*prime[j]]=phi[i]*(prime[j]-1);}phi[i]=(phi[i]+phi[i-1])%MOD;}memset(a,-1,sizeof(a));printf("%d",solve(N));return 0;
}

View Code

转载于:https://www.cnblogs.com/onioncyc/p/8469350.html

【51nod】1239 欧拉函数之和 杜教筛相关推荐

  1. 51nod1244 欧拉函数之和 杜教筛

    和上一题差不多,一个是μ*I=e,一个是φ*I=Id 稍改就得到了这题的代码 (我会告诉你我一开始逆元算错了吗) 1 #include <bits/stdc++.h> 2 #define ...

  2. 杜教筛--51nod1239 欧拉函数之和

    求$\sum_{i=1}^{n}\varphi (i)$,$n\leqslant 1e10$. 这里先把杜教筛的一般套路贴一下: 要求$S(n)=\sum_{i=1}^{n}f(i)$,而现在有一数论 ...

  3. matlab狄利克雷函数,数论入门1——莫比乌斯函数,欧拉函数,狄利克雷卷积,线性筛,莫比乌斯反演,杜教筛...

    数论入门1 一个菜鸡对数论的一点点理解... 莫比乌斯函数 定义函数$\mu(n)$为: 当n有平方因子时,$\mu(n)=0$. 当n没有平方因子时,$\mu(n)=(-1)^{\omega(n)} ...

  4. (数论)51NOD 1136 欧拉函数

    对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为Euler's totient function.φ函数.欧拉商数等.例如:φ(8) = 4(Phi( ...

  5. 杜教筛 狄利克雷卷积入门

    补下暑假的坑 杜教筛看了两天勉勉强强才看懂了一点点 杜教牛逼 杜教筛意义 其实,对于一般的数论题,线性筛已经非常的优秀了. 但是就是有那些duliu出题人,硬是要把数据出到1e10之类的,就看你会不会 ...

  6. 杜教筛及其时间复杂度分析

    文章目录 杜教筛 方法 举例 莫比乌斯函数 欧拉函数 时间复杂度 杜教筛 杜教筛用于求一类积性函数的前缀和,时间复杂度可以做到 O(n23)O(n^{\frac{2}{3}})O(n32​). 方法 ...

  7. 欧拉函数+狄利克雷卷积+莫比乌斯函数+莫比乌斯反演+整除分块+杜教筛

    Powered by:NEFU AB-IN 文章目录 欧拉函数 狄利克雷卷积 莫比乌斯函数 莫比乌斯反演 P3455 [POI2007]ZAP-Queries 整除分块 P2522 [HAOI2011 ...

  8. 欧拉函数的相关应用 noj欧拉函数求和+noj 最大公约数求和

    注意求欧拉函数之和是每个因子的欧拉函数之和不是质因子.而欧拉函数的值是它本身与它的因子件事互质的关系,这样的因子有多少个.点击打开链接 #include<stdio.h> #include ...

  9. Euler:欧拉函数&素数筛

    一.欧拉函数 欧拉函数是小于x的整数中与x互质的数的个数,一般用φ(x)表示. 通式:   其中p1, p2--pn为x的所有质因数,x是不为0的整数. 比如x=12,拆成质因数为12=2*2*3, ...

最新文章

  1. ajax学习----json,前后端交互,ajax
  2. ListView设置EmptyView之后不显示
  3. 微信支付接口开发过程
  4. 右击硬盘分区第一项出现Auto的解决办法
  5. 软件工程实践2017第一次作业
  6. Tapestry5中的DI
  7. 接口测试工具之抓包工具介绍
  8. 从“卡脖子”到人有我优,数字孪生盾构机施工流程可视化
  9. python毕业设计作品基于django框架 教室图书馆座位预约系统毕设成品(6)开题答辩PPT
  10. 引导工业物联网变革 中国占据有利位置
  11. centos7上装qt5.15.2
  12. 【Unity项目实战】手把手教学:飞翔的小鸟(4)文本添加
  13. 最全的女生变声教程—正太音,萝莉音,少女音,御姐音
  14. hexo添加点击爆炸效果 duang duang duang
  15. 华东师范大学计算机模拟试题,华东师范大学计算机机试真题
  16. Linux C/C++程序崩溃bug调试方法
  17. SLF4J及其MDC详解
  18. echarts实现3D地图,轮播功能、背景图片、鼠标悬浮展示数据,附源码!
  19. ANSI环境下支持多语言输入的单行文本编辑器 V0.01
  20. 2020年中国新基建七大产业链全景图

热门文章

  1. Extended Euclidean algorithm(扩展欧几里得算法Matlab实现)
  2. 10-计数排序C实现
  3. 递归与分治——斐波那契数列非递归,递归,与优化后的递归算法
  4. 视频播放器的界面设计并实现播放器
  5. POI LastRowNum and PhysicalNumberOfRows
  6. 03-身体部位-BodyParts(English)
  7. 全面理解Java中的String数据类型
  8. spring cloud各组件详解
  9. Mongodb的锁 原子性 隔离性 一致性
  10. JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记3