Il testo chiedeva la somma dei primi N NUMERI PRIMI, non dei primi N numeri.
Per il primo esercizio potrebbe andare questo:
Il secondo te lo posto quando l'avrò fatto, comunque è MOLTO più semplice di questo.codice:import java.io.*; import java.util.*; public class SommaNPrimi { public static boolean primo(int val) { boolean risultato = true; if ( (val == 1) || (val == 2) ) risultato = true; else { int k=2; while (risultato && (k<val)) { if ((val%k) == 0) risultato = false; k++; } } return risultato; } public static int sommaPrimiValori(int valore, int numero) { int tmp = valore; if (numero == 0) tmp = 0; else { if (primo(valore)) tmp = tmp + sommaPrimiValori( (valore+1), (numero - 1) ); else tmp = sommaPrimiValori( (valore+1), numero ); } return tmp; } public static int sommaPrimi(int numero) { return sommaPrimiValori(1, numero); } public static void main(String [] args) { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String valore; int val; System.out.print("Intrudurre un valore: "); System.out.flush(); try { valore = br.readLine(); val = Integer.parseInt(valore); System.out.println("La somma dei primi "+val+" numeri primi è: "+sommaPrimi(val)); } catch (NumberFormatException nfe) { nfe.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } } }



Rispondi quotando