Grazie mille anche a te.. il codice modificato adesso è:

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.");
		
	}

}
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.

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??