Matematické Fórum

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

#1 23. 06. 2010 09:05 — Editoval pizet (23. 06. 2010 10:28)

pizet
Místo: Levice/Praha
Příspěvky: 459
Reputace:   11 
 

Je číslo prvočíslo?

Mám takýto program:

Code:

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ť?


Do you follow my way? Or you just see a black stain swimming in the Milky Way ...
KSP je určený pre študentov základných a stredných škôl, ktorí majú záujem naučiť sa niečo z oblasti algoritmov, logických úloh, programovania a informatiky.

Offline

  • (téma jako vyřešené označil(a) pizet)

#2 23. 06. 2010 10:23

Stýv
Vrchní cenzor
Příspěvky: 5710
Reputace:   215 
Web
 

Re: Je číslo prvočíslo?

2 je taky prvočíslo

Offline

 

#3 23. 06. 2010 10:29

pizet
Místo: Levice/Praha
Příspěvky: 459
Reputace:   11 
 

Re: Je číslo prvočíslo?

Jasné, tam som sa sekol, už je to opravené.


Do you follow my way? Or you just see a black stain swimming in the Milky Way ...
KSP je určený pre študentov základných a stredných škôl, ktorí majú záujem naučiť sa niečo z oblasti algoritmov, logických úloh, programovania a informatiky.

Offline

 

#4 23. 06. 2010 15:49

pizet
Místo: Levice/Praha
Příspěvky: 459
Reputace:   11 
 

Re: Je číslo prvočíslo?

Aha, toto som vymyslel, keď som bol pred chvíľou vo vani:

Code:

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?


Do you follow my way? Or you just see a black stain swimming in the Milky Way ...
KSP je určený pre študentov základných a stredných škôl, ktorí majú záujem naučiť sa niečo z oblasti algoritmov, logických úloh, programovania a informatiky.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson