uva 10820 send a table (欧拉函数)
2016-10-14 14:40
459 查看
点击打开链接
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int N=5e4+20;
int phi[N+20];
// f(x,y)=f(x*k,y*k) 则只保留f(x,y)
//所以最后答案中的 x,y为互质的 对x分类计算出答案
void phi_table(int n)
{
for(int i=2;i<=n;i++)
phi[i]=i;
phi[1]=1;
for(int i=2;i<=n;i++)
{
if(phi[i]==i)//素因子i
{
phi[i]=i-1;
for(int j=i+i;j<=n;j+=i)//根据素因子i去更新
{
phi[j]=phi[j]/i*(i-1);
}
}
}
}
int main()
{
int n;
phi_table(N);
while(cin>>n&&n)
{
long long ans=0;
for(int x=2;x<=n;x++)//对x分类计算出答案
ans+=phi[x];// (x,y) x>y x为较大的那个
cout<<ans*2+1<<endl;//+1:(1,1) 交换顺序也算:*2
}
return 0;
}
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int N=5e4+20;
int phi[N+20];
// f(x,y)=f(x*k,y*k) 则只保留f(x,y)
//所以最后答案中的 x,y为互质的 对x分类计算出答案
void phi_table(int n)
{
for(int i=2;i<=n;i++)
phi[i]=i;
phi[1]=1;
for(int i=2;i<=n;i++)
{
if(phi[i]==i)//素因子i
{
phi[i]=i-1;
for(int j=i+i;j<=n;j+=i)//根据素因子i去更新
{
phi[j]=phi[j]/i*(i-1);
}
}
}
}
int main()
{
int n;
phi_table(N);
while(cin>>n&&n)
{
long long ans=0;
for(int x=2;x<=n;x++)//对x分类计算出答案
ans+=phi[x];// (x,y) x>y x为较大的那个
cout<<ans*2+1<<endl;//+1:(1,1) 交换顺序也算:*2
}
return 0;
}
相关文章推荐
- UVa 10820 Send a Table(欧拉函数)
- UVa 10820 Send a Table (Farey数列&欧拉函数求和)
- Send a Table UVA - 10820——欧拉函数初级应用
- Send a Table 欧拉函数UVA - 10820
- UVA 10820 Send a Table (欧拉函数打表)
- Send a Table 欧拉函数UVA - 10820
- Send a Table 欧拉函数UVA - 10820
- [UVA 10820]Send a Table[欧拉函数][nloglog(n)]
- UVA 10820 Send a Table(欧拉函数)
- UVa 10820 - Send a Table(欧拉函数)
- UVA - 10820 Send a Table 欧拉函数
- Send a Table 欧拉函数UVA - 10820
- uva10820 - Send a Table 欧拉函数
- 【UVA 10820】Send a Table(欧拉函数)
- UVa 10820 Send a Table (Farey数列&欧拉函数求和)
- Send a Table 欧拉函数UVA - 10820
- uva 10820 Send a Table 欧拉函数
- Uva 10820 Send a Table(欧拉函数)
- UVA 10820 - Send a Table 数论 (欧拉函数)
- UVa10820 Send a Table[欧拉函数]