SEM INF 28.9.2010

28.09.2010 18:00

A ešte raz tie čísla... 

    Na tejto hodine sme si znova spomínali čísla, ale tentoraz aj prvočíslo. Nižšie mám uvedených niekoľko úloh, ktoré sa na hodine nestihli a musím si ich dokončiť.

Prvočíslo

    Je to také kladné celé číslo, ktorého jedinými deliteľmi je 1 a on sám. Okrem 2 neexestuje žiadne ďalšie párne prvočíslo. Každé číslo väčšie ako 2 ktoré nie je prvočíslo je zložené číslo, a dá sa napísať ako súčin prvočísel. 1 a 0 sa nepovažujú za prvočísla, ale ani za zložené čísla.
Zaujímavosť: prvočísel je nekonečne veľa.

Úlohy, ktoré mi treba dokončiť:

    Zisti či je číslo prvočíslo.
    Nájdi všetky prvočísla v intervale.

Prípad obchodného cestujúceho

    Prípad dispečera: dva vlaky ktoré sa stretávajú, každý má istú periódu za ktorú sa vráti na stanicu, vypíš všetky časy stretnutia od 6:00 do 18:00. (Ja som to robila od zadaného času do zadaného času.)

***

program vlaky;
uses Crt;
var H,M,S,A,B,C,D,C1,D1 : longint;
begin
  clrscr;
  S:=0;
  writeln('Zadaj cas zaciatku v hodinach a minutach:');
  readln(H); readln(M);
  A:=H*3600+60*M+S;
  writeln('Zadaj cas ukoncenia v hodinach a minutach:');
  readln(H); readln(M);
  B:=H*3600+60*M+S;
  writeln('Zadaj periodu 1. vlaku v hodinach a minutach a sekundach:');
  readln(H); readln(M); readln(S);
  C:=H*3600+60*M+S;
  writeln('Zadaj periodu 2. vlaku v hodinach a minutach a sekundach:');
  readln(H); readln(M); readln(S);
  D:=H*3600+60*M+S;
  C1:=C;
  D1:=D;
  while C1<>D1 do
    begin
      if C1>D1 then
        D1:=D1+D
      else C1:=C1+C;
    end;
  while A     begin
      H:=(A div 3600);
      M:=((A-H*3600) div 60);  
      S:=A-(3600*H)-(M*60);
      writeln(H,' hod ',M,' min ',S,' sek ');
      A:=A+C1;
    end;
  readln;
end.

***

Tento program je tu.
Tento program fungoval na princípe: ráta to v najmenšej jednotke v sekundách, čiže najprv všetko premení na sekundy. A potom zistí periódu v ktorej sa stretnú dva vlaky na tej stanici, a potom v zadanom časovom limite vypíše všetky časy kedy sa stretnú.
Aplikácia je tu.

Program obchodného cestujúce bez sekúnd 

    Mám program, ktorý to meria iba v minútach, pretože pôvodný program so sekundami mi najprv nefungoval(už funguje).

***

program vlaky1;
uses Crt;
var
H,M,A,B,C,D,C1,D1 : integer;
begin
clrscr;
writeln('Zadaj cas zaciatku v hodinach a minutach:');
readln(H); readln(M);
A:=H*60+M;
writeln('Zadaj cas ukoncenia v hodinach a minutach:');
readln(H); readln(M);
B:=H*60+M;
writeln('Zadaj periodu 1. vlaku v hodinach a minutach:');
readln(H); readln(M);
C:=H*60+M;
writeln('Zadaj periodu 2. vlaku v hodinach a minutach:');
readln(H); readln(M);
D:=H*60+M;
C1:=C;
D1:=D;
while C1<>D1 do
 begin
  if C1>D1 then
   D1:=D1+D
  else C1:=C1+C;
 end;
while A

***

Tento program je tu.
Tento program fungoval na princípe: takom istom ako predošlý, ale všetko premieňa iba na minúty nie až na sekundy.
Aplikácia je tu.

  


Koniec hodiny.

—————

Späť


Čo si trebalo dokončiť 

Čo som nestihla...
    Takže som si dokončila čo som mala uvedené vyššie...

Zisti či je číslo prvočísl

*** 

program ci_je_prvocislo;
uses Crt;
var i,N : integer;
    delitel : boolean;
begin
  Clrscr;
  write('Zadaj cislo, o ktorom chces vediet ci je prvocilo: ');
  readln(N);
  if N<2 then writeln('Cislo nie je prvocilo')
  else begin
    i:=2;
    delitel:=FALSE;
    while (i<=(sqrt(n))) AND (delitel=FALSE) do begin
      if (N mod i)=0 then delitel:=TRUE;
      inc(i);
    end;
    if delitel=TRUE then writeln('Cislo nie je prvocilo')
    else writeln('Cislo je prvocislo');
  end;
  readln;
end. 

***

Tento program je tu.
Aplikácia je tu.
Tento program pracoval na princípe: o čísle zisťuje či je deliteľné nejakým číslom do jeho druhej odmocniny, ak nie, tak je prvočíslo.

 

Nájdi všetky prvočísla v intervale

***

program prvocisla_v_intervale;
uses Crt;
var i,N,dh,hh : integer;
    delitel : boolean;
begin
  Clscr;
  writeln('zadaj dolnu hranicu');
  readln(dh);
  writeln('zadaj hornu hranicu');
  readln(hh);
  for N:=dh to hh do begin
    if N>1 then begin
      i:=2;
      delitel:=FALSE;
      while (i<=(sqrt(n))) AND (delitel=FALSE) do begin
        if (N mod i)=0 then delitel:=TRUE;
        inc(i);
      end;
      if delitel=FALSE then writeln(N)
    end;
  end;
  readln;
end.

*** 

Tento program je tu.
Aplikácia je tu.
Tento program pracoval na princípe: takom istom ako predošlý, 
ale nezadávame mu my čísla o ktorých zisťuje či sú prvočísla alebo nie, ale skúša každé od dolnej po hornú hranicu, ak je číslo prvočíslo, tak ho vypíše.