回 帖 发 新 帖 刷新版面

主题:求解

)键入两个自然数N和K,将N写成K个大于1的自然数相乘,要求这K个数按从小到大排列,而且除了第K个数之外,前面(K-1)个数是N分解出来的最小自然数。 
例如:N=24,K=2时,输出为24=2*12,而不是24=4*6 
N=3,K=2时,输出则为“No answer!” 

回复列表 (共2个回复)

沙发

function prime(n:integer):boolean;
  var i:integer;
  begin
    prime:=true;
    for i:=2 to trunc(sqrt(n)) do if n mod i=0 then exit(false)
  end;
procedure mul(n,k:integer);
  var i,j:integer;
  begin
    if (k>1) and prime(n) then begin write('No answer!');exit end;
    write(n,'=');
    for i:=1 to k-1 do begin
      for j:=2 to trunc(sqrt(n)) do if n mod j=0 then break;
      write(j,'*');
      n:=n div j
    end;
    write(n)
  end;

板凳


递归的孩纸飘过~

我来回复

您尚未登录,请登录后再回复。点此登录或注册