Completato esercizio p6.9 con Sequence.

Implementata interfaccia Sequence nella classe PrimeGenerator
This commit is contained in:
2022-12-30 15:26:35 +01:00
parent eac302e89b
commit 5e9dae5687
2 changed files with 36 additions and 29 deletions

View File

@@ -5,13 +5,15 @@
*/ */
public class PrimeGenerator implements Sequence<Integer> { public class PrimeGenerator implements Sequence<Integer> {
private int max; private int max;
private int i = 1; private int attuale;
/** /**
* Costruttore parametrico completo * Costruttore parametrico completo
* @param max Numero massimo che deve essere stampato * @param max Numero massimo che deve essere stampato
*/ */
public PrimeGenerator(int max) { public PrimeGenerator(int max) {
this.max = max; this.max = max;
attuale = 2;
} }
/** /**
@@ -19,23 +21,25 @@ public class PrimeGenerator implements Sequence<Integer> {
* @return Numero successivo nella sequenza * @return Numero successivo nella sequenza
*/ */
public Integer next() { public Integer next() {
int counter = 0; while (true) {
int j = 1; boolean primo = true;
while(j <= i && counter <= 2) for (int i = 2; i < attuale; i++) {
{ if (attuale % i == 0) {
counter = 0; primo = false;
if(i % j == 0)
{
counter++;
} }
j++;
} }
return Integer.MIN_VALUE; if (primo) {
int prossimo = attuale;
attuale++;
return prossimo;
}
attuale++;
}
} }
public boolean hasNext() { public boolean hasNext() {
return true; return attuale < max;
} }
} }

View File

@@ -1,5 +1,9 @@
import java.util.Scanner; import java.util.Scanner;
/**
* Classe di test per PrimeGenerator
* @author radaelli11353
*/
public class Test { public class Test {
public static void main(String[] args) { public static void main(String[] args) {
Scanner in = new Scanner(System.in); Scanner in = new Scanner(System.in);
@@ -8,8 +12,7 @@ public class Test {
PrimeGenerator primi = new PrimeGenerator(max); PrimeGenerator primi = new PrimeGenerator(max);
while(primi.hasNext()) { while(primi.hasNext()) {
int numero = primi.next(); System.out.println(primi.next());
if(numero != 0) System.out.println(numero);
} }
} }