# HDU 5430 Reflect 欧拉函数

231人阅读 评论(0)

We send a light from one point on a mirror material circle,it reflectsN times and return the original point firstly.Your task is calcuate the number of schemes.

Input
First line contains a single integer T(T10) which denotes the number of test cases.
We send a light from one point on a mirror material circle,it reflects
N
times and return the original point firstly.Your task is calcuate the number of schemes.

For each test case, there is an positive integer N(N106).

Output
For each case, output the answer.

Sample Input
1
4

Sample Output
4

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
#define bint __int64
#define N 3000001
bint phi[N];
void init()//筛选法求N以内所有数的欧拉函数值
{
int i, j;
for(i = 1; i < N; i++)
phi[i] = i;
for(i = 2; i < N; i++)
if(i == phi[i])
for(j = i; j < N; j += i)
phi[j] = (phi[j] / i) * (i - 1);
}
int main()
{
init();
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
printf("%lld\n",phi[n+1]);
}
return 0;
}


0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：13603次
• 积分：618
• 等级：
• 排名：千里之外
• 原创：50篇
• 转载：1篇
• 译文：0篇
• 评论：0条
阅读排行
评论排行