10852 - Less Prime
#include <stdio.h>
int prime(int x);
long sum=1,store[50000];
int main()
{
long Number,N,N1,prime1,prime2[ 50000],a[50000],save[50000];
scanf("%ld",&Number);
for(long i3=1;i3<=Number;i3++)
{
scanf("%ld",&N);
if(N%2==0)
N1=N/2;
else
{
int N2=N+1;
N1=N2/2;
}
for(long i=N1;i<=N;i++)
prime(i);
for(int i=1;i<sum;i++)
a[i]=store[i];
int r=1;
for(int i=1;i<sum;i++)
{
for(int p=1;p<=5;p++)
{
if((a[i]*p <= N) && (N < a[i]*(p+1)))
{
save[r]= N-p*a[i];
prime2[r]= a[i];
r=r+1;
}
}
}
long max=-99999;
for(int i1=1;i1<r;i1++)
{
if(save[i1] > max )
{
max=save[i1];
prime1=prime2[i1];
}
}
printf("%ld\n",prime1);
sum=1;
}//End of First for loop
}
int prime(int x)
{
int r,j;
r=(int)x/2;
for(j=2;j<=r;j++)
if(x%j==0)
break;
if(j==r+1)
{
store[sum]=x;
sum=sum+1;;
}
}
int prime(int x);
long sum=1,store[50000];
int main()
{
long Number,N,N1,prime1,prime2[
scanf("%ld",&Number);
for(long i3=1;i3<=Number;i3++)
{
scanf("%ld",&N);
if(N%2==0)
N1=N/2;
else
{
int N2=N+1;
N1=N2/2;
}
for(long i=N1;i<=N;i++)
prime(i);
for(int i=1;i<sum;i++)
a[i]=store[i];
int r=1;
for(int i=1;i<sum;i++)
{
for(int p=1;p<=5;p++)
{
if((a[i]*p <= N) && (N < a[i]*(p+1)))
{
save[r]= N-p*a[i];
prime2[r]= a[i];
r=r+1;
}
}
}
long max=-99999;
for(int i1=1;i1<r;i1++)
{
if(save[i1] > max )
{
max=save[i1];
prime1=prime2[i1];
}
}
printf("%ld\n",prime1);
sum=1;
}//End of First for loop
}
int prime(int x)
{
int r,j;
r=(int)x/2;
for(j=2;j<=r;j++)
if(x%j==0)
break;
if(j==r+1)
{
store[sum]=x;
sum=sum+1;;
}
}
Comments
Post a Comment