Algebra

Analyse

Bewijzen

De grafische rekenmachine

Discrete wiskunde

Fundamenten

Meetkunde

Oppervlakte en inhoud

Rekenen

Schoolwiskunde

Statistiek en kansrekenen

Telproblemen

Toegepaste wiskunde

Van alles en nog wat


\require{AMSmath}

Volmaakte getallen in Turbo Pascal

Ik wil een programma met behulp van turbopascal schrijven, dat alle volmaakte getallen tot 1000 opspoort en laat zien. Maar dit wil maar niet lukken. Help!

Kim
Student hbo - vrijdag 25 januari 2002

Antwoord

Het kan...
PROGRAM Volmaakt;
VAR   n:LONGINT;

FUNCTION isprime(n:LONGINT):BOOLEAN;
var  t:LONGINT;
begin
   isprime:=FALSE;
   FOR t:=2 TO n DO
      if (n MOD t) = 0 then begin
        isprime:=true;
        EXIT
   end;
end;

FUNCTION macht(g,e:LONGINT):LONGINT;
var   t,resultaat:LONGINT;
begin
   resultaat:=1;
   FOR t:=1 TO e DO
      resultaat:=resultaat*g;
    macht:=resultaat
end;

FUNCTION eucl(n:LONGINT):LONGINT;
var   sn, laatste:LONGINT;
begin
   sn:=macht(2,n)-1;
   laatste:=macht(2,n-1);
   if isprime(sn) then eucl:=sn*laatste
   else eucl:=0;
end;

BEGIN
for n:=1 to 16 do
   if eucl(n)<>0 then writeln(n,' -> ',eucl(n));
   READLN
END.
Een minpuntje... als n groter wordt dan 16 gebeurt er iets vreemds... die LONGINT van Turbo Pascal is niet zo lang als ik dacht... misschien een leuk werkje voor jou om dat in het programma te verbeteren!

Zie bron

WvR
vrijdag 25 januari 2002

©2001-2024 WisFaq