关于欧拉函数 特点的一道题
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[305];
int eular(int n)
{
int res=n,a=n;
for(int i=2;i*i<=a;i++)
{
if(a%i==0)
{
res=res/i*(i-1);
while(a%i==0)a/=i;
}
}
if(a>1)res=res/a*(a-1);
return res;
}
bool check(int dis)
{
for(int j=1;j<=300;j++)
{
if(eular(dis+j)!=a[j])
{
return false;
}
}
return true;
}
bool isPrime(int x) {
if (x < 4) return x > 1;
if ((x & 1) == 0) return false;
for (int i = 3; i * i <= x; i += 2)
if (x % i == 0) return false;
return true;
}
int main()
{
for(int i=1;i<=300;i++) scanf("%d",&a[i]);
int ans=1e9+7;
for(int i=1;i<=300;i++)
{
int dis=a[i]+1;
if(isPrime(dis)&&(a[i]+300-i)<=1e9+7&&check(a[i]+1-i))
{ans=a[i]+2-i;break;}
}
if(ans!=1000000007)cout<<ans<<endl;
else cout<<"yang12138 laji"<<endl;
return 0;
}