Rýchle zjištení jestli je zadané číslo prvočíslem

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategórie: KMP (Programy mladých programátorů)

Autor: Ľuboš Saloky
Program: Fastprv1.pas
Soubor exe: Fastprv1.exe

Rýchle zjištení jestli je zadané číslo prvočíslem.
{ fastprv1.pas              Copyright (c) TrSek alias Zdeno Sekerak  }
{ Rýchle zistenie či je zadané číslo prvočíslo.                      }
{                                                                    }
{ Datum:28.01.1996                              http://www.trsek.com }
 
program Rychle_zistenie_ci_je_cislo_prvocislo;
uses Dos;
const prvoc:string='1234567907';
var zvysok,x,del,k,odmoc:longint;
    y,dlzka,err:integer;
    vysl:boolean;
    hod,min,sec,s100:word;
BEGIN
  writeln('Zaciname...');
  GetTime(hod,min,sec,s100);
  writeln(hod,':',min,':',sec,'.',s100);
  vysl:=true;
  val(prvoc,k,err);
  odmoc:=Trunc(Sqrt(k));
  dlzka:=Length(prvoc);
  for x:=1 to dlzka do prvoc[x]:=Chr(Ord(prvoc[x])-48);
  for x:=2 to odmoc do begin
    k:=10-x;
    zvysok:=(Ord(prvoc[1])*k+Ord(prvoc[2])) mod x;
    if dlzka>2 then for y:=3 to dlzka do zvysok:=(k*zvysok+Ord(prvoc[y])) mod x;    if zvysok=0 then vysl:=false;
  end;
  GetTime(hod,min,sec,s100);
  writeln(hod,':',min,':',sec,'.',s100);
  write('Cislo ');
  if vysl=false then write('nie ');
  writeln('je prvocislo');
  readln;
END.