给定一个整数N(1<N<=4000000)的整数求∑GCD(i,j)i=1,2,3....j-1,2<=j<=n的值.参考了一下网上的题解,复述一下我理解后的思路,加深理解:

首先求出N以内的所有数的欧拉函数值phi[i],也就是比i小的与i互质的正整数的个数,比如a,b互质,那么最大公约数就是1,phi[b]值是m,表示与其互质的有m个,也就是这些数公因数之和为m;那么放大到k倍后,k*a和k*b的最大公约数就是k,那么相应的公约数之和变为k*m。数组a[i]就是表示k*b=i时增加的公约数之和的不断统计,a[2]+a[3]+...a[n]就是最后结果,代码把a[n]前面的累加到a[n],因此最终输出a[n]即可。

 #include<stdio.h>
#define N 4000010
#define M 4000000 int phi[N];
typedef long long ll;
ll a[N]; void solve(void)
{
int i,j;
for(i=;i<=M;i++)
{
if(phi[i]==i)//phi[i]为i表示该数的欧拉函数值还没有求过,也就是该数为素数。
{
for(j=i;j<=M;j+=i)//筛法求欧拉函数值,
phi[j]=phi[j]/i*(i-);//phi[j]与素数i运算
}
for(j=;j*i<=M;j++)//经历上步之后phi[i]不会再改变了,此时phi[i]表示i的欧拉函数值,
a[j*i]+=j*phi[i];
}
for(i=;i<=M;i++)
a[i]+=a[i-];
} int main(void)
{
int n,i;
for(i=;i<=M;i++)
phi[i]=i;
solve();
while(scanf("%d",&n)&&n)
{
printf("%lld\n",a[n]);
}
return ;
}

UVA 11426 GCD Extrme (Ⅲ)的更多相关文章

  1. UVA 11426 - GCD - Extreme (II) (数论)

    UVA 11426 - GCD - Extreme (II) 题目链接 题意:给定N.求∑i<=ni=1∑j<nj=1gcd(i,j)的值. 思路:lrj白书上的例题,设f(n) = gc ...

  2. UVA 11426 GCD - Extreme (II) (欧拉函数)题解

    思路: 虽然看到题目就想到了用欧拉函数做,但就是不知道怎么做... 当a b互质时GCD(a,b)= 1,由此我们可以推出GCD(k*a,k*b)= k.设ans[i]是1~i-1与i的GCD之和,所 ...

  3. UVA 11426 GCD - Extreme (II) (欧拉函数)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Problem JGCD Extreme (II)Input: Standard ...

  4. UVa 12716 - GCD XOR(筛法 + 找规律)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  5. UVA 12716 GCD XOR (异或)

    题意:求出[1,n]中满足gcd(a,b)=a xor b,且1<=a<=b<=n的对数 题解:首先a xor b = c,则a xor c = b,而b是a的约数,则可以使用素数筛 ...

  6. UVa 12716 GCD XOR (简单证明)

    题意: 问 gcd(i,j) = i ^ j  的对数(j <=i <= N ) N的范围为30000000,有10000组例子 思路:GCD(a,b) = a^b = c GCD(a/c ...

  7. UVA - 12716 GCD XOR(GCD等于XOR)(数论)

    题意:输入整数n(1<=n<=30000000),有多少对整数(a, b)满足:1<=b<=a<=n,且gcd(a,b)=a XOR b. 分析:因为c是a的约数,所以枚 ...

  8. UVA 11426 GCD - Extreme (II)(欧拉函数打表 + 规律)

    Given the value of N, you will have to find the value of G. The definition of G is given below:Here ...

  9. UVA 11426 - GCD - Extreme (II) 欧拉函数-数学

    Given the value of N, you will have to find the value of G. The definition of G is given below:G =i< ...

随机推荐

  1. Js~数组的操作push,pop,shift,unshift

    说几个概念: 队列:先进先出堆栈:先进后出 shift:从集合中把第一个元素删除,返回这个元素的值pop:从集合中把最后一个元素删除,返回这个元素的值 unshift:在集合开头添加一个或者多个元素, ...

  2. ajax跨域访问 java controller 和 cxf(webservice) 配置方式(CORS)

    1. controller跨域访问,配置方式 重点在这里: <mvc:cors> <mvc:mapping path="/*" allowed-origins=& ...

  3. 归并排序算法(C#实现)

    归并排序(Merge Sort)是利用"归并"技术来进行排序.归并是指将若干个已排序的子文件合并成一个有序的文件.归并排序有两种方式:1): 自底向上的方法 2):自顶向下的方法 ...

  4. TS格式解析

    1.TS格式介绍 TS:全称为MPEG2-TS.TS即"Transport Stream"的缩写.它是分包发送的,每一个包长为188字节(还有192和204个字节的包).包的结构为 ...

  5. C#&JQ仿网上商城商品条件筛选功能

    1.后台绑定: 一种案例: 根据第一级显示第二级,并带有每个二级的“全部”功能: #region 绑定区域 #region 绑定一级区域 ) <= ? : (PageIndex - )) + , ...

  6. ASP.NET MVC5总结(二)@HTML扩展

    1.@Html.AntiForgeryToken() 用来防止跨站请求伪造(CSRF)攻击的一个措施 2.@Html.ValidationSummary(true) 主要用来 (1). 显示后台 Mo ...

  7. 关于SringMvc的参数的传递

    * @RequestMapping这个注解代表要请求的方法 * value值表示请求的 方法名*********@RequestParam(value="username")代表请 ...

  8. 二进制方式快速安装MySQL数据库命令集合

    二进制方式快速安装MySQL数据库命令集合 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1.安装mysql ls mysql ...

  9. Iptables網路連線限制及攻擊防護和相關設定

    [筆記整理]Iptables網路連線限制及攻擊防護和相關設定 1. 限制每個IP連接HTTP最大併發50個連接數 iptables -A INPUT -p tcp --dport 80 -m conn ...

  10. github 查看单个文件的历史记录命令

    gitk 安装: apt-get install gitk 点击打开链接http://stackoverflow.com/questions/278192/view-the-change-histor ...