Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Crediti:
- * Ludovico Conti
- */
- import fiji.io.*;
- /* Problema
- Scrivere un'applicazione Java che dato un intero n letto da input, generi numeri random, interi, compresi tra 1 e 100, e stampi in output i primi n numeri primi trovati tra i random generati e il numero totale di numeri random generati.
- */
- public class RandomNumber {
- public static void main(String[] args) {
- /* Nota si può eventualmente decommentare il System.out per vedere in runtime il numero generato */
- /* Dichiarazione delle variabili */
- int n; // variabile in input per i primi n numeri primitivi
- int rdm_n; //numero random che genero
- int gen; //numero di elementi generati random
- int gen_p; //numero di primitivi generati
- String s,s1; //stringhe di tutti numeri random(s) e quelli primitivi(s1)
- s = ""; //Assegno una stringa vuota che verrà concatenata con i numeri random.
- s1 = ""; //Assegno una stringa vuota che verrà concatenata con i numeri primi.
- /* Fine delle dichiarazioni */
- /* Iniziazione dei contatori = 0 */
- gen = 0;
- gen_p = 0;
- /* Fini iniziazione contatori */
- System.out.println("Inserisci il numero di numeri primi da trovare.");
- n = Lettore.in.leggiInt(); //Prendo in input un valore intero
- while(gen_p < n){ //Genero numeri fino a quando non trovo n primi
- rdm_n = (int)(Math.random()*100)+1; //Generazione del numero random tra 1 e 100
- // System.out.println("Numero Random Generato:"+rdm_n);
- gen ++; //incremento il contatore dei numeri generati
- s = s+rdm_n+" "; //concateno i numeri generati nella stringa
- if (numeroprimitivo(rdm_n)){ //controllo se il numero è primo
- s1 = s1+rdm_n+" ";; //se è primo concateno il numero alla stringa dei primi
- gen_p++; //Incremento il contatore dei numeri primi.
- }
- }
- System.out.println("Sono stati generati:"+gen+" numeri random.");
- System.out.println("Sono stati trovati:"+gen_p+" numeri primi tra quelli generati.");
- System.out.println("Elenco dei numeri generati:"+s);
- System.out.println("Elenco dei numeri primi trovati:"+s1);
- }
- public static boolean numeroprimitivo(int number){
- /* Definizione del problema */
- /* Un numero e' primitivo se divisibile solo per 1 e per se stesso */
- /* Nota: si può eventualmente decommentare i due System.out se si vuol vedere il runtime il controllo dei numeri */
- /* Iniziazione delle definizioni */
- boolean k = true;
- int costante = 2;
- int radice = (int)Math.sqrt(number);
- /*Fine delle iniziazzioni */
- while (k && (costante<=radice)){ //ciclo while, fino a quando k è vero e costante è < della radice di numero continua
- if (number%costante== 0) //controllo che il valore assoluto di number costante sia uguale a 0; quind numero multiplo di costante
- k = false;
- costante = costante +1; //Incremento la costante
- }
- if (!k){ //se k == false printa questo
- // System.out.println("Il numero:"+number+" non e' primo.");
- return false;
- }else{
- // System.out.println("Il numero:"+number+" e' primo.");
- return true;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement