naja mit Longint reicht aus ... hab ich gemerkt
1.000.000.000 dauert schon ne Weile
nächstes Problem:
(is jetzt in Pascal... ich schreib die Testprogramme immer dort, da ja die Programmiersprache dieselbe ist, es zur Veranschaulichung viel schneller zu schreiben geht, als immer erst ne Form zusammenklicken zu müssen)
Delphi-Quellcode:
program Teiler;
uses crt;
type prim=array[1..30] of Integer;
type haeuf=array[1..30] of integer;
var n:longint;
h:prim;
p:haeuf;
procedure primfak(n:longint;var p:prim; var h:haeuf);
var t,w:longint;
diff,i:integer;
begin
for i:=1 to 30 do h[i]:=0;
i:=0;
for t:=2 to 3 do
if (n mod t=0) then
begin
i:=i+1;
p[i]:=t;
while n mod t=0 do
begin n:=n div t;
h[i]:=h[i]+1
end
end;
t:=5;
diff:=2;
w:=round(sqrt(n));
while t<=w do
begin
if (n mod t = 0) then
begin i:=i+1;
p[i]:=t;
while n mod t=0 do
begin
n:=n div t;
h[i]:=h[i]+1
end
end;
t:=t+diff;
diff:=6-diff;
end;
if n>1 then
begin
i:=i+1;
p[i]:=n;
h[i]:=h[i]+1
end;
for i:=0 to 30 do
begin
writeln(p[i],'*',h[i]);
end;
end;
Begin
clrscr;
writeln('Zahl, die in ihre Primfaktoren zerlegt werden soll: ');
readln(n);
writeln;
primfak(n,h,p);
writeln;
readln;
end.
--> Primfaktorzerlegung.
-> er bricht immer mit dem Exitcode 201 ab, doch ich kann keinen Fehler erkenn. Kann mit nur vorstellen, dass ich die eigentlich noch nicht benutzen "Array-Variablen" h und p falsch übergebe.
mfg Pyromane