Devo scrivere un metodo che, data una lista v di n numeri interi, la funzione maxPrimo applicata a v restituisce il valore del piu grande elemento della lista che non è multiplo proprio di nessun altro elemento della lista.
La mia idea di sviluppo è questa: mi prendo in ingresso una vettore di numeri interi, fra questi elementi salvo in un vettore gli elementi che non sono multipli di nessun altro elemento della lista tranne che di se stessi, fra questi elementi prendo il piu grande e lo restituisco.
Ho provato a scrivere la prima parte del codice, cioè fino ad avere il vettore degli elementi che non multipli di altri elementi tranne se stessi, ma ho incontrato problemi.
In pratica mi dichiaro un vettore della stessa lunghezza di v che conterrà gli elementi che ecc ecc..., poi ad ogni elemento indicato da i, faccio scorrere la variabile j, facendo ogni volta il controllo if(v[j]!=v[i]&&v[i]%v[j]==0). Dopo di che dico che se non è multiplo allora metto l'elemento dentro al vettore...ma non funziona...codice:int[] maxPrimo(int[] v){ //int max=0; int[] vettore = new int[v.length]; boolean multiplo; for(int i=0;i<v.length;i++){ multiplo=true; for(int j=0;j<v.length;j++){ if(v[j]!=v[i]&&v[i]%v[j]==0) multiplo=false; if(multiplo) vettore[i]=v[i]; } } return vettore; }
In pratica se gli passo il vettore int[] v = {6,7,21,5,16,14,18,11,20,15,13};, in teoria mi dovrebbe restituire il vettore {6,7,5,16,11,13} ed eventualmente zeri nelle posizioni rimaste libere, ma invece mi rende il vettore {6,7,21,5,16,14,0,11,20,15,13}
Mi potreste aiutare a capire per favore?