🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #12585

Re: pascal vraagje

#12585
From: apardon
Date: Fri, 26 Oct 2001 09:35
59 lines
3235 bytes
On Tue, 23 Oct 2001 19:19:44 GMT,
Roel Schroeven <x3jmyi0yrrn3h001@sneakemail.com> wrote:
>In article <qggB7.804$yZ.177@afrodite.telenet-ops.be>, "Regus"
><regus@pandora.be> wrote:
>
>> Ik moet in pascal alle priemgetallen tussen 1 en 100 hebben. Kan iemand
>> mij verderhelpen?
>
>Daar bestaat een algorithme voor, het algorithme van Euclides als ik me
>niet vergis. Dat gaat als volgt.
>
>1. Maak een lijst van de getallen van 2 tot 100 (vanaf 2 omdat 1 toch
>geen priemgetal is, en het maakt het algorithme eenvoudiger), en onthoudt
>op de een of andere manier of het getal in kwestie priem is of niet:
>"var priemlijst: array[2..100] of boolean"
>voldoet prima, als mijn kennis van Pascal-syntax nog klopt).
>2. Initialiseer alle getallen in die lijst als zijnde priem:
>for i := 2 to 100 do priemlijst[i] := true;
>3. Loop over alle getallen in de lijst. Als het getal in kwestie niet
>priem is, ga je direct naar het volgende. Als het wel priem is, duidt je
>alle veelvouden van dat getal aan als zijnde niet priem. Je kan ineens
>ook het betreffende getal uitvoeren.
>
>for i := 2 to 100 do begin
>  if priemlijst[i] then begin
>    WriteLn(i);
>    j := 2 * i;

Vervang bovenstaande lijn door.

     j := i * i;

Je kan al direct naar het kwadraat van het nieuwe priemgetal
springen om de heel eenvoudige reden dat op dit moment alle
reeds kleinere priemgetallen gevonden zijn en hun veelvouden
geschrapt. Alle getallen die een veelvoud zijn van het nieuwe
gevonden priemgetal maar kleiner dan het kwadraat zijn dus
ook een veelvoud van een kleiner priemgetal en dus reeds
geschrapt.

>    while j < 100 do begin
>      priemlijst[j] := false;
>      j := j + i;
>    end;
>  end;
>end;
>
>Er zal nogal wat haar op de syntax staan vrees ik, maar het algorithme
>zou wel moeten kloppen, en is efficienter dan de andere oplossingen die
>ik gezien heb. 't Is trouwens beter als je die 100 in een constante
>steekt, dan kan je het programma gemakkelijk aanpassen om de
>priemgetallen tussen bijv. 2 en 10000 te zoeken. Je moet wel altijd bij 2
>beginnen!
>
>-- 
>Roel Schroeven
>x3jmyi0yrrn3h001@sneakemail.com (anti-spam email address from sneakemail.com)
>
>"Don't blame me if there are bugs. Blame the cute, furry one." - Rusty Russell
Technical Details
Message-ID: <slrn9tibhs.75k.apardon@trout.vub.ac.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!193.190.198.17!newsfeeds.belnet.be!naxos.belnet.be!news.belnet.be!snic.vub.ac.be!apardon
References: <qggB7.804$yZ.177@afrodite.telenet-ops.be> <pan.2001.10.23.21.19.43.107.9066@sneakemail.com>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,2a0e47af4eb831ae
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2001-10-26 02:40:13 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!193.190.198.17!newsfeeds.belnet.be!naxos.belnet.be!news.belnet.be!snic.vub.ac.be!apardon
From: apardon@trout.vub.ac.be ()
Newsgroups: be.comp.programming
Subject: Re: pascal vraagje
Date: 26 Oct 2001 09:35:37 GMT
Organization: VUB/ULB Computing Centre
Lines: 60
Message-ID: <slrn9tibhs.75k.apardon@trout.vub.ac.be>
References: <qggB7.804$yZ.177@afrodite.telenet-ops.be> <pan.2001.10.23.21.19.43.107.9066@sneakemail.com>
NNTP-Posting-Host: trout.vub.ac.be
X-Trace: snic.vub.ac.be 1004088937 17187 134.184.15.70 (26 Oct 2001 09:35:37 GMT)
X-Complaints-To: usenet@snic.vub.ac.be
NNTP-Posting-Date: 26 Oct 2001 09:35:37 GMT
User-Agent: slrn/0.9.6.2 (Linux)