non ti resterebbe che provare e vedere che succede (facendoti stampare a video i vari valori che ottieni.
In ogni caso al verificarsi di questo if
codice:
if (a[i] + a[i + l] < c )
p--;
prima diminuisci p e poi in ogni caso aumenti p.
Un consiglio, crea un unico punto di uscita e metti SEMPRE le parentesi per if e cicli e dai nomi significativi alle variabili, aumenti la leggibilità del tuo codice
codice:
public static int esercizio1(int[] input, int c) {
int ret = 0;
if(input.length % 2 != 0) {
ret = input.length;
}else{
int p = 0;
int lungh = input.length
for (int index = 0; index < lungh; index++) {
if (( input[index] % input[index + lungh] == 0 ) || ( input[index + lungh] % input[index] == 0 )) {
if (input[index] + input[index + lungh] < c ) {
p--;
}
}
p++;
}
ret = p;
}
return ret;
}
qui ti ho fatto un esempio, non so come vada p (nella logica dell'esercizio)