# Help me with the code of problem "Help Ram"

this is my C code which i wrote,but it is generating wrong answer error…can anyone please help me with any special case m missing:???

code:-

`````` #include<stdio.h>
#include<math.h>
long long int prime(long long int);
int main()
{
long long int t,tt,a,b,j=0,arr[100];
scanf("%lld",&t);
if (t>100)
return -1;
tt=t;
while(t--)
{
scanf("%lld%lld",&a,&b);
if (a > b || a < 2)
return -1;
if(prime(b) && b!=a)
arr[j++]=b-1;
else if (prime(b) == 0)
arr[j++]=b;
else
arr[j++]=-1;
}
for (j=0;j<tt;j++)
printf("%lld\n",arr[j]);
return 0;
}

long long int prime(long long int b)
{
int k=2,c;
if (b==2)
return 1;
if (b==3)
return 1;
if (b%2==0)
return 0;
c=sqrt(b);
//printf("%d\n",c);
while(b%k!=0)
{
if (k==c)
break;
k++;
}
if (k == c)
return 1;
else
return 0;

}``````

Your solution would give a wrong answer on the special case of a=2 and b=3. In that case b is prime but b-1 is also prime hence the answer should be -1.

1 Like

Thanks man, I removed that bug even so its generating error of wrong answer. I have fulfilled the input constraints also then what possible case is creating problem?

For the following test case : a=1738 and b=7921. Your solution is giving output 7920 whereas the output should be 7921. Check whether you are taking factors exactly upto sqrt(N).

Thanks again. I removed the bug. The problem was in prime numbers’ squares. : )