/***
大意:计算gcd(x,y,z) =1 0<= x, y , z <= n 问有多少个这样的对
莫比乌斯反演:(反演: 用结果推原因)
函数m(m)的定义如下:

 莫比乌斯反演:

     * f(x) = sigma{g(d)}其中x % d == 0,则g(x) = sigma{miu(d) * f(x/d)}
* f(x) = sigma{g(d)}其中d % x == 0,则g(x) = sigma{miu(d/x) * f(d)} 莫比乌斯反演中miu(x) = * 1 {x中含有偶数个不同的质因子}
* -1 {x中含有奇数个不同的质因子}
* 0 {其他情况} 本题: 设f(x) = 约数为x 的所有数集合 g(x) = 最大公约数gcd 为x的集合
那么g(x) = siga(mu(d)*f(x/d)) x%d==0
或者 g(x) = siga(mu(d/x) *f(d)) d%x==0 在本题中只包含了x,y,z>1 情况 ,,还应加上退化到3个平面上的情况。。
1、 f(x) = n/x*n/x*n/x;----〉 g(x) = mu[i] *(n/x*n/x*n/x)
2、 加上退化到三个平面 ----〉 g(x) = mu[i]*(n/x+1)*(n/x+1)*(n/x+1) 或者分开求:
1、 三个坐标轴。。3
2、 空间中 n/x* n/x*n/x;
3、 三个坐标平面: n/x*n/x +n/x*n/x +n/x*n/x
**/
1、 第一种方法
#include <iostream>
#include <cstring>
using namespace std; const int maxn = ;
int pri[maxn];
int prime[maxn];
int mu[maxn]; void pri_mu(){
memset(prime,,sizeof(prime));
int cnt =;
mu[] =;
for(int i=;i<maxn;i++){
if(!prime[i]){
mu[i] =-;
pri[cnt++] = i;
}
for(int j=;j<cnt;j++){
if(i*pri[j]>maxn)
break;
prime[i*pri[j]] = ;
if(i%pri[j]==){
mu[i*pri[j]] =;
break;
}else
mu[i*pri[j]] = -mu[i];
}
}
} int main()
{
pri_mu();
int t;
cin>>t;
long long n;
while(t--){
cin>>n;
long long ans =;
for(int i=;i<=n;i++)
ans += (long long )mu[i]*((n/i+)*(n/i+)*(n/i+)-);
cout<<ans<<endl;
}
return ;
}
----------------------------------------------------------------------------------------------------------
2、 第二种方法
#include <iostream>
#include <cstring>
using namespace std; const int maxn = ;
int pri[maxn];
int prime[maxn];
int mu[maxn]; void pri_mu(){
memset(prime,,sizeof(prime));
int cnt =;
mu[] =;
for(int i=;i<maxn;i++){
if(!prime[i]){
mu[i] =-;
pri[cnt++] = i;
}
for(int j=;j<cnt;j++){
if(i*pri[j]>maxn)
break;
prime[i*pri[j]] = ;
if(i%pri[j]==){
mu[i*pri[j]] =;
break;
}else
mu[i*pri[j]] = -mu[i];
}
}
} int main()
{
pri_mu();
int t;
cin>>t;
long long n;
while(t--){
cin>>n;
long long ans =;
for(int i=;i<=n;i++)
ans += (long long )mu[i]*((n/i)*(n/i)*(n/i+));
cout<<ans<<endl;
}
return ;
}

最新文章

  1. Zookeeper API for JAVA实战与应用
  2. 一个screen的简单配置。。
  3. uva705--slash maze
  4. 继续努力刷题--BE STRONGER AND STRONGER
  5. C#:实现快捷键自定义设置
  6. linux内核地址mapping
  7. 如何定制Windows系统右键菜单
  8. javascript 操作 css Rule
  9. uva 11210 Chinese Mahjong(暴力搜索)
  10. POJ 3261 Milk Patterns(后缀数组+二分答案)
  11. flexbox应用举例
  12. IntelliJ IDEA Windows下Spark开发环境部署
  13. 【60】Spring总结之基础架构(1)
  14. Google、B站……那些神奇的404页面,你看过多少?
  15. Matplotlib学习---matplotlib里颜色,标记,线条类型参数的选择(colors, markers, line styles)
  16. Kudu的卸载(cdh)
  17. keras 的svm做分类
  18. ubuntu中可以ping通IP地址但是ping不通域名的问题(www.baidu.com)
  19. Kubernetes+Prometheus+Grafana部署笔记
  20. poj 1966(顶点连通度)

热门文章

  1. Stitch Fix 融资1200万美元,又一个时尚创业的哈佛女MBA |华丽志
  2. swith 语句详解
  3. openssl命令行Base64编解码
  4. gdbserver 安卓apk
  5. IE能够打开网页 可是chrome和火狐打不开网页解决的方法
  6. POJ 3169 Layout (图论-差分约束)
  7. linux之vim配置
  8. Robolectric 探索之路
  9. wpf 如何设置滚动条在超出范围的时候才显示?(转)
  10. php制作数据字典