#1Doomista
Nemůžeš alokovat dvourozměrné pole, protože neexistuje operátor new[][]. Ale můžeš si to třeba simulovat v jednorozměrném poli a alokovat to jako new float[MAX * 2].
Ale vzhledem k tomu, že to máš v C++, tak si to dej do vektoru a máš s alokací vystaráno.
Následující jednoduchý algoritmus implementovaný v jazyce C++ zkouší dělit vstup všemi menšími čísly od 2 do jeho odmocniny - pokud nalezne v tomto intervalu dělitele zadaného čísla, je jasné, že zadané číslo není prvočíslo. Testovat stačí pouze do odmocniny, protože pokud n je složené číslo, můžeme psát: pro . Pokud by nestačilo testovat do odmocniny, znamenalo by to, že a současně , vynásobíme-li ale tyto dva vztahy, máme , což je spor.
bool isPrime(int number) {
if (number < 2) return false;
if (number == 2) return true;
if (number % 2 == 0) return false;
int max = (int) sqrt(number);
for (int i = 3; i <= max; i += 2) {
if (number % i == 0) {
return false;
}
}
#3ondra.holub
s vektory jsem ještě nikdy nedělal :/, ale napadl mě jiný způsob, sice vysoce neefektivní, ale snadný a funkční, což je to, co zrovna potřebuju - pole struktur