由给出的样例可以看出 记结果为f(n);
当n=1时 显然f(n)=3;
当n=2时 f(n)=2*( )+3;
当n=3时 f(n)=2()+3;
当n=4时 f(n)=2*()+3
.............
从这些可以看出规律
代码:
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <functional>
#define PI acos(-1)
typedef long long ll;
using namespace std;
const int INF = 0x3f3f3f3f;
const ll N=1000+10;
ll prime[N];
ll phi[N]={0,1};
ll judge[N]={1,1};
ll num_prime=0;
void init()
{
for(ll i=2;i<N;i++)
{
if(judge[i]==0)
{
prime[num_prime++]=i;
phi[i]=i-1;
}
for(ll j=0;j<num_prime&&i*prime[j]<N;j++)
{
judge[i*prime[j]]=1;
if(i%prime[j]==0)
{
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
phi[i*prime[j]]=phi[i]*(prime[j]-1);
}
}
for(ll i=3;i<N;i++)
phi[i]=phi[i-1]+phi[i];
phi[1]=0;
}
int main()
{
ll t,n;
init();
scanf("%lld",&t);
ll cas=0;
while(t--)
{
cas++;
scanf("%lld",&n);
printf("%lld %lld ",cas,n);
printf("%lld\n",2*phi[n]+3);
}
}