Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
Delphi 10.4 Sydney
|
AW: Zugriffs Verweigerung bei Multiplikation in Schleife Boolean Array Primzahl Anwen
31. Aug 2011, 19:34
Soll wohl irgendwie sowas sein, sieht nach Primzahlberechnung o.ä. aus !?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
maxZ = 100;
maxN = 10000; // maxZ*maxZ
var
Untergrenze, Obergrenze, I, J, K: integer;
var
Gestrichen: array [2..MaxN] of boolean;
begin
Untergrenze:= StrToInt(Edit1.Text);
Obergrenze:= StrToInt(Edit2.Text);
Panel1.Caption:= '';
if Untergrenze > Obergrenze then
Panel1.Caption:= 'Die Untergrenze darf die Obergrenze nicht überschreiten.'
else
if Obergrenze > maxZ then
Panel1.Caption:= 'Die Obergrenze ist zu hoch. Sie darf maximal '+IntToStr(maxZ)+' betragen.'
else
if Untergrenze < 2 then
Panel1.Caption:= 'Die Untergrenze muss mindestens 2 betragen.'
else
begin
Gestrichen[2]:= false;
for I:= 2 to maxZ do
if not Gestrichen[I] then
for J:= 2 to maxZ do Gestrichen[I*J]:= true;
ListBox1.Clear;
ListBox1.Items.BeginUpdate;
for K:= Untergrenze to Obergrenze do
if not Gestrichen[K] then ListBox1.Items.Add(IntToStr(K));
ListBox1.Items.EndUpdate;
end;
end;
Alternative:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Untergrenze, Obergrenze, I, J, K: integer;
Result: boolean;
begin
Untergrenze:= StrToInt(Edit1.Text);
Obergrenze:= StrToInt(Edit2.Text);
ListBox1.Clear;
ListBox1.Items.BeginUpdate;
for I:= Untergrenze to Obergrenze do
begin
Result:= true;
for J:= 2 to Obergrenze do
begin
if not Result then Break;
for K:= 2 to Obergrenze do
begin
if not Result then Break;
if I = J*K then Result:= false;
end;
end;
if Result then ListBox1.Items.Add(IntToStr(I));
end;
ListBox1.Items.EndUpdate;
end;
Geändert von Bjoerk (31. Aug 2011 um 20:10 Uhr)
Grund: Alternative
|
|
Zitat
|