Grazie mille anche a te.. il codice modificato adesso è:
Ma ho sempre un problema..adesso il sei me lo analizza, ma come risultati mi stampa 6,5,4,3,2,1..e non i numeri primi. Idem se inserisco il 7. A questo punto mi viene da pensare che la procedura per analizzare un numero e vedere se è primo che ho scritto non è corretta. Ma prima che iterassi il blocco di istruzioni per le i che vanno da giorno a 1, se inserivo un numero primo me lo stampava, se inserivo un numero non primo, non me lo stampava.codice:import java.util.Scanner; public class Giornonascita { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); System.out.println("Inserisci il giorno della tua data di nascita: "); int giorno = in.nextInt(); int k= 2; int resto= 0; //controllo= (es: che non sia 32 //-giorno che non esiste) if (giorno<=31 && giorno >0) for(int i=giorno; i>=1; i--) {k=2; do {resto= i%k; if (resto !=0) k++; else break;} while (k<(i-1)); System.out.println(i); } else System.out.println("Errore nell'inserimento: riprova."); } }
Cioè, quello che intendo fare è un algoritmo di divisioni con modulo, che incrementi via via il k. Ad esempio, se inserisco 6, il resto è zero per k=2 e quindi si capisce immediatamente che non me lo deve stampare. Se invece inserisco 7, il resto è diverso da zero e quindi continua ad incrementare il k, fino a quando si arriva a 6<6 (k<i-1) ed esce dal ciclo, perchè non è vera, stampandomi il 7. Spero di essere stata chiara, ma voglio farmi capire >.<
Sarà che quel print mi stampa anche i numeri non primi poichè non viene interpretato come "uscita " dal while, ma semplicemente come istruzione successiva per tutti i numeri da 1 a giorno??

Rispondi quotando