Denne side opdateres ikke mere; gå i stedet til min nye hjemmeside. Visse uddaterede informationer fra denne side er ikke flyttet over og findes kun på denne gamle side.

Primtalsgenerator

Features

Dette er en ret hurtig implementation af Eratosthenes primtalssi.

Den finder alle primtal fra 1 til et givent tal, og angiver endvidere hvilket nummer primtallet har.

Programmet kører meget tæt på lineær tid, og min PII 266MHZ kan bestemme ca. 5 mio tal i sekundet (hvis jeg slår output fra. Det svarer til at finde alle primtal fra 1 til 1 mia på 3,5 til 4 minutter.

Programmet er ret venligt mht. hukommelse. Det tager 1 byte hukommelse for hver 16 tal man vil undersøge (dvs. at undersøgelsen af alle tal op til 1 mia fylder ca. 60 MiB i hukommelsen - til sammenligning er der 26355867 primtal i det område, altså ikke meget mere end to bytes pr. primtal).

Bemærk at disse målinger er fra en ældre udgave af programmet. Den nye og noget optimerede udgave er 50% hurtigere, og selve genereringen er tager nu kun 25% af den tid det tog tidligere (på en PIII 800 MHz tog det omkring 27 sekunder at finde alle primtal op til 100 mio (når output er slået fra, nu tager det kun 6-7 sekunder - igen med output slået fra, jeg har målt tider på kun 74 sekunder for at finde alle primtal op til 1 mia på en PIII 800Mhz - det er næsten 13 mio tal der checkes i sekundet!). Programmet bruger lige så meget hukommelse som tidligere, men er baseret på et forbedret udgave af sien.

Installation

  1. Hen sourcekoden her (primtal.cc, 812).
  2. Kompiler med gcc -O3 -m486 -o primtal primtal.cc.
  3. Så er du kørende!

Begrænsninger

Programmet kan ikke udregne primtal der er større end 2^31-1 (ca. 2.1 mia). Det kan ret let ændres til at køre op til 2^32 (ca. 4.2 mia). Man kan også meget let ændre det til at køre op til 2^64 (ca. 18,4 mia mia), men det ville gå ud over hastigheden.

Programmet starter fra 1. Altid. Også selvom du vil finde alle primtal mellem 1000000 og 2000000. Algoritmen tvinger det til det. det vil dog også være hurtigere (i dette tilfælde) at bruge dette program, da algoritmen er meget hurtig.

Programmet bruger meget RAM (når man når op på store tal - min computer kunne ikke lide da jeg satte den til at regne op til 2 mia for den har kun 80 MiB RAM med 256 MiB RAM fik jeg en computer gladeligt op på 2 mia).


Dette dokument er: http://old.westergaard.eu/programmer/primtalcc.php3.
Send kommentarer angående denne side til Michael Westergaard <michael@westergaard.eu>.
Siden er senest opdateret Monday 30th of November 2009 05:26:17.

Statistik

Michael's Blog

Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in /Library/WebServer/Sites/old.westergaard.eu/include/twitter.php on line 254 Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in /Library/WebServer/Sites/old.westergaard.eu/include/twitter.php on line 255

Pink & Purple

Saturday, May 14th at 16:19:56

Salad Snacks

Tuesday, April 26th at 22:26:34

Per Consumptie Wijser

Tuesday, April 26th at 21:49:29

Transition System

Thursday, April 21st at 22:42:38

Black or White

Thursday, February 24th at 13:40:47