试用三种循环求N的所有约数

program divisor;
var
   n, c, i : integer;
begin
     write('Please enter a positive integer: ');
     readln(n);
     c := trunc(sqrt(n));
     write('Its Divitsors: ');
     if c*c = n then c := c-1;
     for i := 1 to c do
         if n mod i = 0 then
            write(i, ', ', n div i, ', ');
     if (c+1)*(c+1) = n then write(c+1, ', ');
     readln;
end.   


program divisor;
var
   n, c, i : integer;
begin
     write('Please enter a positive integer: ');
     readln(n);
     i := 1;
     c := trunc(sqrt(n));
     write('Its Divitsors: ');
     if c*c = n then c := c-1;
     while i <= c do
     begin
         if n mod i = 0 then
            write(i, ', ', n div i, ', ');
         i := i+1;
     end;
     if (c+1)*(c+1) = n then write(c+1, ', ');
     readln;
end.


program divisor;
var
   n, c, i : integer;
begin
     write('Please enter a positive integer: ');
     readln(n);
     write('Its Divitsors: ');
     if n = 1 then
        write(1)
     else
     begin
          i := 1;
          c := trunc(sqrt(n));
          if c*c = n then c := c-1;
          repeat
                if n mod i = 0 then
                   write(i, ', ', n div i, ', ');
                i := i+1;
          until i > c;
          if (c+1)*(c+1) = n then write(c+1, ', ');
     end;
     readln;
end.

posted @ 2010-01-01 20:24  SmartIOI  阅读(429)  评论(0)    收藏  举报
本站采用CC授权如需转载、引用文章,请务必附上作者及来源处。 Creative Commons License