Description

给出一个数字N

求\(\sum_{i=1}^{n}\sum_{j=1}^{n}\varphi(gcd(i,j))\)

Input

第一行为一个正整数T,表示数据组数。

接下来T行为询问,每行包含一个正整数N。

T<=5000,N<=10^7

Output

按读入顺序输出答案。

Sample Input

1

10

Sample Output

136

sol

这种题,八成和欧拉函数或者莫比乌斯函数有关......

那就推式子:

\(\sum_{i=1}^{n}\sum_{i=1}^{n}\varphi(gcd(i,j))\)

\(=\sum_{d=1}^{n}\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{n}{d}\rfloor}\varphi(d)\sum_{e|i,e|j}\mu(e)\)

\(=\sum_{d=1}^{n}\varphi(d)\sum_{e=1}^{\lfloor\frac{n}{d}\rfloor}\mu(e)\sum_{i=1}^{\lfloor\frac{n}{de}\rfloor}\sum_{j=1}^{\lfloor\frac{n}{de}\rfloor}1\)

\(=\sum_{d=1}^{n}\varphi(d)\sum_{e=1}^{\lfloor\frac{n}{d}\rfloor}\mu(e)\lfloor\frac{n}{de}\rfloor^2\)

\(=\sum_{T=1}^{n}\lfloor\frac{n}{T}\rfloor^2\sum_{d|T}\varphi(\frac{T}{d})\mu(d)\)

前面的那个直接分块即可,后面的冷静分析一下:

“看到\(\mu\)就想到积性函数,就想到质因数分解,就想到消去$>$2的幂的贡献,OIer的思想唯有在这一层能如此跃进 ”

我们把T分解质因数之后,对于每个质数\(p_i\)的\(q_i\)次幂单独计算,最后再乘起来。

由于乘数里面有\(\mu\),所以大于2的幂次产生的贡献可以忽略,对于每个质数,后面这个式子就能够直接推出公式,具体地:

\(if\quad qi=0\quad f(p_i)=1\)

\(if\quad q_i=1\quad f(p_i)=p_i-2\)

\(if\quad q_i=2\quad f(p_i)=(p_i-1)^2\)

\(else\quad f(p_i)=pi^{qi-2}(p_i-1)^2\)

那么这个就可以线性筛了。

然后就没有了。

Code

#include <cstdio>
#define ll long long
int ls,n,T,vis[10000005],pri[10000005],tot;ll s[10000005];
void shai()
{
s[1]=1;for(int i=2;i<=1e7;i++)
{
if(!vis[i]) pri[++tot]=i,s[i]=i-2;
for(int j=1;j<=tot&&i*pri[j]<=1e7;j++)
{
vis[i*pri[j]]=1;
if(i%pri[j]==0)
{
if(i/pri[j]%pri[j]==0) s[i*pri[j]]=s[i]*pri[j];
else s[i*pri[j]]=s[i/pri[j]]*(pri[j]-1)*(pri[j]-1);
break;
}
s[i*pri[j]]=s[i]*(pri[j]-2);
}
}
for(int i=1;i<=1e7;i++) s[i]+=s[i-1];
}
ll cal(int n){ll ans=0;for(int i=1;i<=n;i=ls+1) ls=n/(n/i),ans+=(s[ls]-s[i-1])*(n/i)*(n/i);return ans;}
int main(){for(shai(),scanf("%d",&T);T--;printf("%lld\n",cal(n))) scanf("%d",&n);}

最新文章

  1. 查看apache、linux、kernel、nginx等版本
  2. Sublime Text 3插件安装
  3. C++概念整理
  4. svn 提交失败
  5. windows下安装yaf和git
  6. C#中进行单元测试
  7. ES6中的const命令
  8. ZOJ 2588 Burning Bridges (tarjan求割边)
  9. 下载个jquery-easyui-1.3.0使用,把他导入到myeclipse10里,jquery-1.7.2.min.js报错。 错误如下, Syntax error on token &quot;Invalid Regular Expression Options&quot;, no accurate correc
  10. 转: object 和embed 标签播放flash
  11. r语言之生成规则序列,规则序列函数及用法
  12. C#中float的取值范围和精度
  13. 实战系列之 Node.js 玩转 Java
  14. python 字符串格式化输出 %d,%s及 format函数
  15. 记一次简单的sql注入
  16. curl 模拟请求
  17. ES6 import
  18. WebStorm破解方法
  19. bootstrap中的模态框(modal,弹出层)
  20. idea 热部署之JRebel安装-激活-简单使用(修改方法\配置文件均生效)

热门文章

  1. C#编程技巧
  2. JS,JQUERY 常用笔记
  3. Mycat主从模式下的读写分离与自动切换
  4. 动态绑定事件-on
  5. Express的路由详解
  6. Composer安装(windows)
  7. Android 创建项目出现No resource found that matches the given name Theme.AppCompat.Light
  8. php+mysql网站无限级栏目分类-递归获取树形结构函数
  9. 基于jquery 的插件,让IE支持placeholder属性
  10. rosbag数据记录及转换图片、视频