SEM INF 8.9.2010

08.09.2010 18:00

Zaujímavé čísla 

    Na tejto hodine sme preberali rôzne čísla, popis niektorých z nich je tu, na každé sa dá napísať program, ktorý načíta číslo, a zistí či je to rodné číslo/dokonalé...

Rodné číslo

    Prvých šesť číslic určuje dátum narodenia a pohlavie RRMMDD. Ale ženy majú k mesiacu prirátaných 50. Zvyšok rodného čísla väčšinou oddeľuje lomítkom, každý človek narodený v určitý deň by ho mal mať iný. Na Slovensku však stále existuje viac ako 20 000 duplicitných rodných čísel.
Niekedy sa na koniec pridávali len tri cifry, ale zmenilo sa to, a pridávajú sa 4, a celé 10-miestne číslo musí byť deliteľné 11. 
Zaujímavosť: 
Koncové 4 cifry rodného čísla sú prideľované systematicky, a vraj sa z ich dá vyčítať kde si sa narodil. 

Dokonalé číslo

   Je to také kladné celé číslo, že súčet jeho deliteľov okrem neho samého, ale vrátane 1 sa rovná tomu číslu. Napr. 6=1+2+3.
Zaujímavosť: nie je jasné že by existovali nejaké nepárne dokonalé čísla.

Armstrongovo číslo

    O tom veľa na slovenských stránkach nenájdete, ale je jeden veľmi pekný anglický článok na wikipedii https://en.wikipedia.org/wiki/Narcissistic_number  Pretože toto číslo sa niekedy označuje aj v preklade narcistické. Jeho základnou vlastnosťou je, že sa rovná súčtu tretích mocnín svojich cifier. Musí to byť trojciferné číslo!!!
xyz=x.x.x+y.y.y+z.z.z
Napr.: 153=1.1.1+3.3.3+5.5.5


Algoritmus na zistenie, či je zadané číslo dokonalé:

***

program dokon;
uses Crt;
var n,i,s : integer;

begin
  clrscr;
  writeln(‘Zadaj cislo, o ktorom chces zistit ci je dokonale:’);
  readln(n);
  s:=0;
  for i:=1 to trunc(n/2) do
    if (n mod i)=0 then s:=s+i;
  if s:=n then
    writeln(‘Ahoj, vase cislo je dokonale.’)
  else
    writeln(‘Skoda, vase cislo nie je dokonale.’);
readln;
end.

***

Postup pre n=8, teda zisťuje či je 8 dokonalé číslo alebo nie:
V podstate až po polovicu samotného čísla 'n' zistí, či je tým číslom deliteľné 'n', ak áno priríta ho k 's', ak nie, tak sa 's' nezmení. Po polku je to preto, lebo najväčší deliteľ čísla môže byť jeho polovička, vyššie čísla už nie.

 

i 1 2 3 4 5 6 7
s 1 3 3 7 7 7 7


Tento program je tu.
Tento program si nemusíte ukladať ak chcete vedieť či funguje, stačí si stiahnuť túto aplikáciu, a naťukať číslo, a ono to rovno vyhodí výsledok. Aplikácia sa dá stiahnuť tu.
Tento program fungoval, 
teraz si musím napísať program pre nájdenie všetkých dokonalých čísel do 10000.

Algoritmus na nájdenie všetkých dokonalých čísel do 10 000

***

program dokondo10000;

uses Crt;
var n,i,s : integer;

begin
  clrscr;
  for n:=1 to 10000 do begin
    s:=0;
    for i:=1 to trunc(n/2) do
      if (n mod i)=0 then s:=s+i;
  end;
  if s=n then writeln(n);
  readln;
end.

***

 V podstate tento program robí to isté čo ten predošlý, ale nezadávame mu my čísla o ktorých zisťuje či sú dokonalé alebo nie, ale skúša každé od 1 po 10 000, ak je dokonalé číslo, tak ho vypíše. 
Tento program je tu.
Aplikácia tohto programu je tu.

 


Koniec hodiny.

—————

Späť