题意:
当n为1的时候数列为1 1
当n为2是数列为 1 2 1
当n为3时数列为1 3 2 3 1
从而观察出相邻两相和等于n时把n插入
问每次能插入几个n?
分析:
1,2,1
1,3,2,3,1
1,4,3,2,3,4,1
1,5,4,3,5,2,5,3,4,5,1
由序列可观察出每个相邻的和和n相等的个数满足欧拉函数。//证明略
#include<stdio.h>
long long eular(long long n)
{
long long ret=1,i;
for(i=2; i*i<=n; i++)
if(n%i==0)
{
n/=i,ret*=i-1;
while(n%i==0)
n/=i,ret*=i;
}
if(n>1)
ret*=n-1;
return ret;
}
int main()
{
long long i,j,k,n;
scanf("%lld",&n);
while(n--)
{
scanf("%lld",&i);
printf("%lld\n",eular(i));
}
return 0;
}