procedure TForm1.gdbh(iBegin,iEnd: Integer); var i,j: Integer; begin for i := (iBegin div 2) to (iEnd div 2) do begin for j := 2 to i do begin if IsPrime(j*2-1){} then begin if IsPrime(i*2-(j*2-1)) then begin Memo1.Lines.Add(IntToStr(i*2)+'='+IntToStr(j*2-1)+'+'+IntToStr(i*2-(j*2-1))); Break; end; end; end; end; end;function TForm1.IsPrime(iNum: Integer): Boolean; var i,j,iMid: Integer; begin Result := True; iMid := Round(Sqrt(iNum)); for i := 2 to iMid do begin if iNum mod i = 0 then begin Result := False; Break; end; end; end;procedure TForm1.Button1Click(Sender: TObject); begin gdbh(6, 100); end;
var n, p: integer; begin for p := 3 to n - 3 do if isprime(p) then if isprime(n - p) then write(n, p, n - p); end;function isprime(p: integer): boolean; var i: integer; begin if (p mod 2 = 0) then result := False else begin i := 3; while (i * i <= p) begin if (p mod i = 0) then begin result := false; exit; end; i := i + 2; end; result := true; end; end;
不好意思,我的isprime(1)也等于true;修订于下: function TForm1.IsPrime(iNum: Integer): Boolean; var i,j,iMid: Integer; begin if Abs(iNum) < 2 then //加上判断条件 Result := False else Result := True; iMid := Round(Sqrt(iNum)); for i := 2 to iMid do begin if iNum mod i = 0 then begin Result := False; Break; end; end; end;
function TForm1.IsPrime(iNum: Integer): Boolean; var i,j,iMid: Integer; begin iNum := Abs(iNum); if iNum < 2 then //加上判断条件 Result := False else Result := True; iMid := Round(Sqrt(iNum)); for i := 2 to iMid do begin if iNum mod i = 0 then begin Result := False; Break; end; end; end;
且是偶数则输出这条运算式;
var
i,j: Integer;
begin
for i := (iBegin div 2) to (iEnd div 2) do
begin
for j := 2 to i do
begin
if IsPrime(j*2-1){} then
begin
if IsPrime(i*2-(j*2-1)) then
begin
Memo1.Lines.Add(IntToStr(i*2)+'='+IntToStr(j*2-1)+'+'+IntToStr(i*2-(j*2-1)));
Break;
end;
end;
end;
end;
end;function TForm1.IsPrime(iNum: Integer): Boolean;
var
i,j,iMid: Integer;
begin
Result := True;
iMid := Round(Sqrt(iNum));
for i := 2 to iMid do
begin
if iNum mod i = 0 then
begin
Result := False;
Break;
end;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
gdbh(6, 100);
end;
n, p: integer;
begin
for p := 3 to n - 3 do
if isprime(p) then
if isprime(n - p) then
write(n, p, n - p);
end;function isprime(p: integer): boolean;
var
i: integer;
begin
if (p mod 2 = 0) then
result := False
else
begin
i := 3;
while (i * i <= p)
begin
if (p mod i = 0) then
begin
result := false;
exit;
end;
i := i + 2;
end;
result := true;
end;
end;
除了语法错误之外,还有逻辑错误,不信试下isprime(1)=true;
isprime(2)=false
function TForm1.IsPrime(iNum: Integer): Boolean;
var
i,j,iMid: Integer;
begin
if Abs(iNum) < 2 then //加上判断条件
Result := False
else
Result := True;
iMid := Round(Sqrt(iNum));
for i := 2 to iMid do
begin
if iNum mod i = 0 then
begin
Result := False;
Break;
end;
end;
end;
var
i,j,iMid: Integer;
begin
iNum := Abs(iNum);
if iNum < 2 then //加上判断条件
Result := False
else
Result := True;
iMid := Round(Sqrt(iNum));
for i := 2 to iMid do
begin
if iNum mod i = 0 then
begin
Result := False;
Break;
end;
end;
end;