I am trying to solve a problem "Given an even number ( greater than 2 ), return two prime numbers whose sum will be equal to given number." and getting the above error. Error is due to code complexity which is clear. Please suggest any way to reduce complexity
My code is:
public ArrayList<Integer> primesum(int A) {
ArrayList<Integer> arr = new ArrayList<Integer>();
for(int i=0;i<=A;i++)
{
//All the numbers are prime
arr.add(1);
}
arr.set(0,0);//
arr.set(1,0);
for(int i=2; i<=Math.sqrt(A);i++)
{
if(arr.get(i)==1)
for(int j=2;i*j<=A;j++)
{
arr.set(i*j,0);
}
}
for(int i=0;i<=Math.sqrt(A);i++)
{
if(arr.get(i)==1)
{
boolean b = checkprime((A-i));
if(b)
{
arr.clear();
arr.add(i);
arr.add(A-i);
break;
}
}
}
return arr;
}
private static boolean checkprime(int p)
{
boolean k =true;
if(p==1)
return false;
for(int i=2;i<=Math.sqrt(p);i++)
{
if(p%i==0)
k=false;
}
return k;
}