Witam.
Tytułem wstępu chciałbym zapytać o to, czy mogę tak często pisać tematy. Codziennie robię zadania z programowania, i coraz więcej mi wychodzi. Ale z niektórymi zadaniami mam problem. Między innymi dzięki waszej pomocy, mogę się rozwijać w nauce. Jeśli tworzę tematy za często proszę o reprymendę.
Do rzeczy. Otóż mam takie zadanie : Do tablicy jednowymiarowej każdy kolejny element losuj z przedziału <4,10> dopóki suma aktualnie losowanej wartości i wszystkich poprzednich elementów tablicy nie będzie liczbą pierwszą. Wypisz tablicę na ekranie
public class Zad1PPZestaw2 {
public static void main(String[] args) {
Random rnd = new Random();
int tab[] = new int[]{};
for (int i = 0; i < tab.length; i++) {
do {
tab[i] = rnd.nextInt(7) + 4;
} while (whetherPrimeNumber(tab) != true);
}
System.out.println("Elements of array: " + Arrays.toString(tab));
}
public static int suma(int[] tab) {
int sum = 0;
for (int i = 0; i < tab.length; i++) {
sum += tab[i];
}
return sum;
}
public static boolean whetherPrimeNumber(int[] tab) {
if (suma(tab) > 2) {
double sq = Math.sqrt(suma(tab));
if (suma(tab) % 2 == 0)
return false;
else {
for (int i = 3; i <= sq; i += 2) {
if (suma(tab) % i == 0) {
return false;
}
}
return true;
}
} else if (suma(tab) == 2) return true;
return false;
}
}
Trudność sprawia mi napisanie warunku do while, Gdyż nie znam rozmiaru tablicy i chce żeby w pętli losowane były kolejne elementy, dopóki nie zostanie spełniony warunek. W jaki sposób mogę to prawidłowo zapisać?