procedure TForm1.Button1Click(Sender: TObject);
var
m,i:integer;
begin
for m:=101 to 200 do
  for i:=2 to trunc(sqrt(m)) do
  if m mod i=0 then
  break;
  if i>=trunc(sqrt(m))+1 then
  begin
    memo1.lines.add(inttostr(m));
  end;
end;我想让最后算到的数值显示在memo控件里,上面的代码我知道不对,请高手解答,谢谢,本人初学Delphi,勿怪!

解决方案 »

  1.   

    我代码这样改了还是不行,点确定按钮后memo控件里不显示任何内容:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    m,i:integer;
    begin
    for m:=101 to 200 do
      for i:=2 to trunc(sqrt(m)) do
      begin
      if m mod i=0 then
      break;
      if i>=trunc(sqrt(m))+1 then
      begin
      memo1.lines.add(format('%d ',[m]));
      end;
      end; 
    end;
    不知道咋整
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      m, i: integer;
      isPrime : Boolean;
    begin
      for m := 101 to 200 do
      begin
        isPrime := True;
        for i := 2 to trunc(sqrt(m)) do
        begin
          if m mod i = 0 then
          begin
            isPrime := False;
            break;
          end;
        end;
        if isPrime then
        begin
          Memo1.lines.add(format('%d ', [m]));
        end;
      end;
    end;
    小改了一下。
      

  3.   


    根据你的代码,我们假设,
    m = 101时的情况,101应该是个素数了吧
    m = 101时,根据“for i:=2 to trunc(sqrt(m)) do”,i的取值就变成了2 - 10
    而即使是最大的 i = 10的情况,
    也不满足 i>=trunc(sqrt(m))+1,
    那么后面写到memo中的代码不可能被执行到,其他的数字可以类推4楼的方法应该可行
      

  4.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
    m,i,k:integer;
    begin
    k:=trunc((sqrt(m)));
    for i:=2 to k do
       if m mod i=0 then
       break;
       if i>=k+1 then
       begin
         showmessage(inttostr(m)+'是素数!');
         exit;
       end
       else
       begin
         showmessage(inttostr(m)+'不是素数!');
         exit;
       end;
    {这个是判断一个数m是否为素数,这个是可以的}