FZU 1969 数论 GCD+欧拉函数应用
2014-05-14 18:51
239 查看
此题非常好...题解我再写一个详细的证明过程,随后发出来
写贴代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define lint long long
const int maxn = 1000015;
int phi[maxn];
lint sum[maxn];
void Phi()
{
int i,j,k;
phi[0]=sum[0]=0;
for(i = 1; i <= maxn; i++) phi[i] = i;
for(i = 2; i <= maxn; i += 2) phi[i] /= 2;
for(i = 3; i <= maxn; i += 2) if(phi[i] == i) {
for(j = i; j <= maxn; j += i)
phi[j] = phi[j] / i * (i - 1);
}
for(i=2;i<maxn;i++)
sum[i]=phi[i];
for(i=2;i<=1000;i++)//每次循环处理掉所有的以i为gcd的情况
{
sum[i*i]+=phi[i]*i;
for(j=i*i+i,k=i+1;j<maxn;j+=i,k++)//k记录多少个i,省却除法的时间
{
sum[j]+=phi[k]*i+phi[i]*k;
}
}
for(i=1;i<maxn;i++)
sum[i]+=sum[i-1];
}
int main()
{
Phi();
lint n,g;
while(scanf("%I64d", &n)!=EOF && n)
{
printf("%I64d\n",sum
);
}
return 0;
}
写贴代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define lint long long
const int maxn = 1000015;
int phi[maxn];
lint sum[maxn];
void Phi()
{
int i,j,k;
phi[0]=sum[0]=0;
for(i = 1; i <= maxn; i++) phi[i] = i;
for(i = 2; i <= maxn; i += 2) phi[i] /= 2;
for(i = 3; i <= maxn; i += 2) if(phi[i] == i) {
for(j = i; j <= maxn; j += i)
phi[j] = phi[j] / i * (i - 1);
}
for(i=2;i<maxn;i++)
sum[i]=phi[i];
for(i=2;i<=1000;i++)//每次循环处理掉所有的以i为gcd的情况
{
sum[i*i]+=phi[i]*i;
for(j=i*i+i,k=i+1;j<maxn;j+=i,k++)//k记录多少个i,省却除法的时间
{
sum[j]+=phi[k]*i+phi[i]*k;
}
}
for(i=1;i<maxn;i++)
sum[i]+=sum[i-1];
}
int main()
{
Phi();
lint n,g;
while(scanf("%I64d", &n)!=EOF && n)
{
printf("%I64d\n",sum
);
}
return 0;
}
相关文章推荐
- FZU 1969 GCD Extreme,UESTC 1723 吴神的大脑: _数论好题(求1-n中所有数的最大公约数之和)
- FZU 1969 && UVA 11426 GCD Extreme (欧拉函数 或 莫比乌斯反演)
- 【数论】【筛法求素数】【欧拉函数】bzoj2818 Gcd
- HDU1695-GCD(数论-欧拉函数-容斥)
- uva 11424 && 11426 GCD - Extreme(数论:欧拉函数)
- (Relax 数论1.9)POJ 3090 Visible Lattice Points(欧拉函数的应用:计算前n项欧拉数之和)
- (Relax 数论1.8)POJ 1284 Primitive Roots(欧拉函数的应用: 以n为模的本原根的个数phi(n-1))
- FZU 1969 GCD Extreme UESTC 1723 吴神的大脑
- FZU 1759 Super A^B mod C(数论+快速幂+欧拉函数)
- GCD nyoj1007(欧拉函数运用&&数论入门)
- HDU2588_大区间_GCD_欧拉函数应用
- BZOJ_P2818 GCD(数论GCD+欧拉函数线性筛)
- 数论 欧拉函数的应用~~
- UVA 11426 GCD - Extreme (II) (数论|欧拉函数)
- GCD HDU杭电2588 【欧拉函数的应用】
- HDU2588:GCD(欧拉函数的应用)
- hdu 1787 GCD Again 欧拉函数小水水 数论
- Uva11424 GCD - Extreme (I) 欧拉函数的应用
- hdu1787 GCD Again(数论:欧拉函数)
- (hdu step 7.2.2)GCD Again(欧拉函数的简单应用——求[1,n)中与n不互质的元素的个数)