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
vrijdag 25 januari 2002