1. /*
  2. 给定n,对于所有的对(i,j),i<j,求出sum{gcd(i,j)}
  3. 有递推式sum[n]=sum[n-1]+f[n]
  4. 其中f[n]=gcd(1,n)+gcd(2,n)+gcd(3,n)......
  5. 那么如何求出f[n],
  6. 设满足gcd(i,n)=x的组合有g(x,n)个,那么f[n]=sum{x*g(x,n)}
  7. 对于gcd(i,n)=x,即有gcd(i/x,n/x)=1,因为将n/x看做是固定的数,那么g(x,n)=phi[n/x]
  8. 求答案时直接先求出所有答案,因为枚举n的每个因子比较麻烦,所以直接枚举x即可,
  9. 那么由上述公式可推出==>f[x*t]+=x*phi[t]
  10. 筛出phi表
  11. */
  12. #include<bits/stdc++.h>
  13. using namespace std;
  14. #define maxn 4000005
  15. //#define ll long long
  16.  
  17. bool check[maxn+];
  18. int phi[maxn+],prime[maxn+],tot;
  19. void init(){
  20. memset(check,,sizeof check);
  21. phi[]=;tot=;
  22. for(int i=;i<=maxn;i++){
  23. if(check[i]==){
  24. prime[++tot]=i;
  25. phi[i]=i-;
  26. }
  27. for(int j=;j<=tot;j++){
  28. if(i*prime[j]>maxn)break;
  29. check[i*prime[j]]=;
  30. if(i%prime[j]==){//prime[j]是i的因子
  31. phi[i*prime[j]]=phi[i]*prime[j];
  32. break;
  33. }
  34. else
  35. phi[i*prime[j]]=phi[i]*(prime[j]-);
  36. }
  37. }
  38. }
  39.  
  40. long long f[maxn],s[maxn];
  41. int main(){
  42. init();
  43. for(int i=;i<=maxn;i++)//枚举每个因数x
  44. for(int j=i+i;j<=maxn;j+=i)//
  45. f[j]+=(long long)i*phi[j/i];
  46. for(int i=;i<=maxn;i++)
  47. s[i]=s[i-]+f[i];
  48.  
  49. int n;
  50. while(cin>>n,n)
  51. cout<<s[n]<<endl;
  52. }

uva11426 欧拉函数应用,kuangbin的筛法模板的更多相关文章

  1. UVA11426 欧拉函数

    大白书P125 #include <iostream> #include <cstring> using namespace std; #define MMX 4000010 ...

  2. poj 2478 Farey Sequence(欧拉函数是基于寻求筛法素数)

    http://poj.org/problem?id=2478 求欧拉函数的模板. 初涉欧拉函数,先学一学它主要的性质. 1.欧拉函数是求小于n且和n互质(包含1)的正整数的个数. 记为φ(n). 2. ...

  3. 线性筛的同时得到欧拉函数 (KuangBin板子)

    线性筛的思想:每个被筛的数是通过它最小的质因子所筛去的. 这种思想保证了每个数只会被筛一次,从而达到线性.并且,这个思想实现起来非常巧妙(见代码注释)! 因为线性筛的操作中用到了倍数的关系去实现,因此 ...

  4. uva11426 欧拉函数应用

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=121873#problem/F 题目大意:给你一个数n,让你输出(i=1-> ...

  5. 欧拉函数 & 【POJ】2478 Farey Sequence & 【HDU】2824 The Euler function

    http://poj.org/problem?id=2478 http://acm.hdu.edu.cn/showproblem.php?pid=2824 欧拉函数模板裸题,有两种方法求出所有的欧拉函 ...

  6. 欧拉函数 &【POJ 2478】欧拉筛法

    通式: $\phi(x)=x(1-\frac{1}{p_1})(1-\frac{1}{p_2})(1-\frac{1}{p_3}) \cdots (1-\frac{1}{p_n})$ 若n是质数p的k ...

  7. UVA 11424 GCD - Extreme (I) (欧拉函数+筛法)

    题目:给出n,求gcd(1,2)+gcd(1,3)+gcd(2,3)+gcd(1,4)+gcd(2,4)+gcd(3,4)+...+gcd(1,n)+gcd(2,n)+...+gcd(n-1,n) 此 ...

  8. UVA 11426 GCD - Extreme (II) (欧拉函数+筛法)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=70017#problem/O 题意是给你n,求所有gcd(i , j)的和,其中 ...

  9. UVA11426 GCD - Extreme (II) (欧拉函数/莫比乌斯反演)

    UVA11426 GCD - Extreme (II) 题目描述 PDF 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 10 100 200000 0 输出样例#1: 67 13 ...

随机推荐

  1. day 5 - 2 字典(dict)练习

    1. 有如下变量(tu 是个元祖),请实现要求的功能 tu = ("alex",[11,22,{"k1":'v1',"k2":[" ...

  2. Python 爬虫五 进阶案例-web微信登陆与消息发送

    首先回顾下网页微信登陆的一般流程 1.打开浏览器输入网址 2.使用手机微信扫码登陆 3.进入用户界面 1.打开浏览器输入网址 首先打开浏览器输入web微信网址,并进行监控: https://wx.qq ...

  3. 基于【磁盘】操作的IO接口:File

    基本操作Api import org.apache.commons.lang3.time.DateFormatUtils; import java.io.*; import java.util.Dat ...

  4. cookie——创建、获取、删除

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. mysql 案例 ~ insert插入慢的场景

    一简介: insert出现慢日志中,应该怎么检测呢 二 理解:事务提交延迟,一般出现在写日志延迟的情况下,会有几种可能    场景:    1 RR模式下,insert等待gap lock锁导致的  ...

  6. linux(ubuntu) python 版本切换

    参考链接:https://blog.csdn.net/thankyou0/article/details/79610854

  7. graph slam BACK END 相关技术资料收集

    学习SLAM首推2个网站: 1. WIKI上的SLAM介绍与资源总结:http://en.wikipedia.org/wiki/Simultaneous_localization_and_mappin ...

  8. P5239 回忆京都

    题目地址:P5239 回忆京都 杨辉三角即组合数的"打表"形式 再求一个二维前缀和 然后处理一下负数即可(因为在求前缀和的过程中有减法) #include <bits/std ...

  9. 统计分析与R软件-chapter2-4

    2.4 因子 统计中的变量有几中重要类别:区间变量.名义变量和有序变量.区间变量取连续的数值,可以进行求和.平均值等运算.名义变量和有序变量取离散值,可以用数值代表,也可以是字符型值,其具体数值没有加 ...

  10. Python内建函数-callable

    Python内建函数-callable callable(object) 中文说明:检查对象object是否可调用.如果返回True,object仍然可能调用失败:但如果返回False,调用对象ojb ...