Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Mám takýto program:
program cv2_3;
var N, i: integer;
prvocislo: boolean;
begin
readln(N); prvocislo := true;
if N mod 2 = 0 then
prvocislo := true
else
for i := 3 to trunc(sqrt(N)) do
begin
if N mod i = 0 then
begin
prvocislo := false;
break
end;
end;
if prvocislo and (N > 1) then writeln('Je')
else writeln('NIe je')
end.Viete porodiť či by sa to dalo ešte nejak vylepšiť?
Offline
Jasné, tam som sa sekol, už je to opravené.
Offline
Aha, toto som vymyslel, keď som bol pred chvíľou vo vani:
var N, i: integer;
prvocislo: boolean;
begin
readln(N);
i := 2;
while (N mod i <> 0) and
(i <= trunc(sqrt(N))) do
i:=1+i;
if (i > trunc(sqrt(N))) and (N > 1) then
writeln('Je.')
else
writeln('Nie je.')
end.Myslím, že to je OK a podľa mojich výpočtov to má časovú zložitosť zhruba O(n), čo sa mi zdá dobré.
Čo na to hovoríte?
Offline