X= 120 ^ (1/n)
ln(X) = Ln(120 ^ (1/n))
ln(X) =(1/n) * ln(120)
X = E ^ ((1/n) * ln(120))
写成Delphi语句:
X := Exp ( (1 / N) * Ln(120))); ____ ____
\ p \ / g /
\ l \_/ n /
\ a o /
\ i s /
\ n /
\_/
ln(X) = Ln(120 ^ (1/n))
ln(X) =(1/n) * ln(120)
X = E ^ ((1/n) * ln(120))
写成Delphi语句:
X := Exp ( (1 / N) * Ln(120))); ____ ____
\ p \ / g /
\ l \_/ n /
\ a o /
\ i s /
\ n /
\_/
要自己编哟
var
I: Integer;
begin
if mCount = 0 then begin
Result := '';
Exit;
end;
if mCount = 1 then begin
Result := IntToStr(mNumber);
Exit;
end;
for I := 2 to Round(Sqrt(mNumber)) do
if mNumber mod I = 0 then begin
Result := IntToStr(I) + '*' + Calc(mNumber div I, mCount - 1);
Exit;
end;
Result := '';
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := Calc(120, 5); //2*2*2*3*5
//Calc(1200000000, 19); //2*2*2*2*2*2*2*2*2*2*3*5*5*5*5*5*5*5*5
end;
把120的最小公约数都放进去
然后用递归
把a里的元素排列组合C5,5放到x1,x2,x3,x4,x5
还要考虑公约数重复,导致x1,x2,x3,x4,x5排列组合中有重复的组合,删掉这些
……
eg:
x:=Power(12000,1/4);//X*X*X*X=12000; =>X=?
呵呵,概念错误。一个数怎么会有公{!!!}约数呢?两个以上才有
看来我们的小学数学都忘得差不多了:)
1 2 3 4 5 6 8 10 12 15 20 24 30 40 60 120
1 1 120
1 2 60
1 3 40
1 4 30
1 5 24
1 6 20
1 8 15
1 10 12
1 12 10
1 15 8
1 20 6
1 24 5
1 30 4
1 40 3
1 60 2
1 120 1
2 1 60
2 2 30
2 3 20
2 4 15
2 5 12
2 6 10
2 10 6
2 12 5
2 15 4
2 20 3
2 30 2
2 60 1
3 1 40
3 2 20
3 4 10
3 5 8
3 8 5
3 10 4
3 20 2
3 40 1
4 1 30
4 2 15
4 3 10
4 5 6
4 6 5
4 10 3
4 15 2
4 30 1
5 1 24
5 2 12
5 3 8
5 4 6
5 6 4
5 8 3
5 12 2
5 24 1
6 1 20
6 2 10
6 4 5
6 5 4
6 10 2
6 20 1
8 1 15
8 3 5
8 5 3
8 15 1
10 1 12
10 2 6
10 3 4
10 4 3
10 6 2
10 12 1
12 1 10
12 2 5
12 5 2
12 10 1
15 1 8
15 2 4
15 4 2
15 8 1
20 1 6
20 2 3
20 3 2
20 6 1
24 1 5
24 5 1
30 1 4
30 2 2
30 4 1
40 1 3
40 3 1
60 1 2
60 2 1
120 1 1
procedure TForm1.Button1Click(Sender: TObject);
var
a:array[1..20] of integer;
i,j,k,l:integer;
s:string;
begin
i:=1;
s:='';
for j:=1 to 20 do
a[j]:=0;
for j:=1 to 120 do
if (120 mod j)=0 then
begin
a[i]:=j;
i:=i+1;
end;
for j:=1 to 20 do
if a[j]=0 then
begin
i:=j-1;
break
end
else
s:=s+' '+inttostr(a[j]);
memo1.Lines.Text:=s;
for j:=1 to i do
for k:=1 to i do
for l:=1 to i do
if a[j]*a[k]*a[l]=120 then
memo1.Lines.Add(inttostr(a[j])+' '+inttostr(a[k])+' '+inttostr(a[l]));
end;
顺便请教一下,我怎么不会用power()呢?请指教。