Uma forma que eu fiz o desafio de gerar numeros primos (nesse caso, abordei também conhecimento de listas, então se ainda não conhecem, ignorem - é o módulo seguinte):
package orientacao3.numerosPrimos;
import java.util.ArrayList;
import java.util.List;
public class NumerosPrimos {
protected int numero;
public void setNumero(int numero) {
this.numero = numero;
}
public boolean verificaPrimalidade(int num) {
int qtdDivisor = 0;
for (int i = 1; i <= num; i++) {
if (num % i == 0) {
qtdDivisor++;
}
}
return qtdDivisor == 2;
}
protected List<Integer> listarPrimos(int limiteSuperior) {
List<Integer> lista = new ArrayList<>();
int numeroAtual = 1;
while (numeroAtual < limiteSuperior) {
numeroAtual++;
if (verificaPrimalidade(numeroAtual)) {
lista.add(numeroAtual);
}
}
int ultimoInteiro = lista.get(lista.size() - 1);
while (ultimoInteiro <= numero) {
numeroAtual++;
if (verificaPrimalidade(numeroAtual)) {
ultimoInteiro = numeroAtual;
lista.add(ultimoInteiro);
}
}
return lista;
}
public void listarPrimosFormatado(int limiteSuperior) {
StringBuilder texto = new StringBuilder("Lista de primos: ");
for (Integer primo : listarPrimos(limiteSuperior)) {
int ultimo = listarPrimos(limiteSuperior).get(listarPrimos(limiteSuperior).size() - 1);
if (primo != ultimo) {
texto.append(primo).append(", ");
}
}
System.out.println(texto.substring(0, texto.length()-2));
}
}
package orientacao3.numerosPrimos;
import java.util.List;
public class GeradorPrimo extends NumerosPrimos {
public void gerarProximoPrimo() {
List<Integer> primos = listarPrimos(numero);
int proxPrimo = primos.get(primos.size() - 1);
System.out.println("Próximo inteiro: " + proxPrimo);
}
}
package orientacao3.numerosPrimos;
public class VerificadorPrimo extends NumerosPrimos {
public void verificarSePrimo() {
if (verificaPrimalidade(numero)) {
System.out.println("O número " + numero + " é primo");
return;
}
System.out.println("O número " + numero + " não é primo");
}
}
package orientacao3.numerosPrimos;
public class Principal {
public static void main(String[] args) {
int numero = 33;
VerificadorPrimo num = new VerificadorPrimo();
num.setNumero(numero);
num.verificarSePrimo();
GeradorPrimo prox = new GeradorPrimo();
prox.setNumero(numero);
prox.listarPrimosFormatado(numero);
prox.gerarProximoPrimo();
}
}
A ideia foi mais dar o número, a lista de primos anteriores e o próximo primo, mas com tudo calculado na classe super.