Hi Coders!
Osszefoglalo a primszamolasrol :)
Kevesen tudtak erdembe hozzaszolnia a temahoz. :(((
Nekik nagyon koszonom (thanx**n)
Part 1: Bevezeto
A primek megtalalasara sok fajta modszer letezik.
Erasztotenesz szitaja (lassu), oszthatosagi (szamig,
szam gyokeig), stb. Ha ezekutan valakinek van meg elmelete
ne kimeljen, kuldje el nekem nyugodtan :)))
Part 2: Gyakorlati megvalositasok
1. Erasztotenesz szitaja (nincs benne osztas)
Valahogy igy:
For Index := 0 to Maximum do Flags[Index] := True; {Torles}
For Index := 0 to Maximum do
If Flags[Index] Then
begin
Prime := Index + Index + 3;
Temp := Index + Prime;
While Temp <= Maximum do
begin
Flags[Temp] := FALSE;
Temp := Temp + Prime;
end;
end;
2. Oszthatosagi teszten alapulo:
2.a. A szamig vegigprobalgato
2.b. A szam gyokeig probalgato
Valahogy igy:
Case szam
0 <= : return NotPrime
1..3 : return YesPrime
Odd(szam) = true : return NotPrime
end
gyok = sqrt(szam)
d = 3
While d <= gyok do
begin
If (szam mod d) = 0
then return NotPrime
else d = d + 2
end
return YesPrime
A fenti kis rutint nagyon jol meg lehet irni asm-ba.
Nekem 31 soros lett :)))
Probaljatok ki 3-1000000-ig (16.6 sec Cyrix 133Mhz).
ui: Az progit DiCE kollega WEB oldalara fel fogom rakni :))))
Ertesitest kesobb adok mivel az oldal fejlesztes alatt al.
udv: XiX
-=- -=-
-=- Minden masodik szavam hazugsag -=-
|