6933/25421化成最简单的分子式得多少?(用程序实现)
解决方案 »
- dll封装子窗体(含ado)报 access violation at dress xxx in module 'project1.dll'错
- 关于主窗体的菜单。。有两个问题。都比较的难
- 如何用QuickReport做这样的报表,分数不过,可以另开问题加分~
- 在DELPHI6打开报表的时候,VCL60.bpl出错,是什么原因?
- 请问那位知道如何将Delphi中的指针型变量转成字符串变量!
- 广交天下朋友,来者有分,留下联系方式吧!!!我白天全在
- 我学了delphi一个多月了还只是会一点点特别是对函数属性。。了解的不多,为何delphi没有中文帮助问档(不是我ENGLISH差,而是实在不方便)有同感的请发言,也请老鸟们指点一二.
- 迫不得已,我要告别delphi走向vb了。再见
- 大家都在编什么呀?能说出来参考参考吗?最近不知道编什么了
- 如何检测是否连接上internet,请讲详细点,行吗?拜托了!
- 三层系统中,客户端如何调用中间层中写的函数
- 用过ImageEn请帮忙解决几个问题,分不够再给,急用
var
i, j, tmpGCD: Integer; function getGCD(A, B: integer): integer;
var
temp: integer;
begin
while A mod B <> 0 do
begin
temp := B;
B := A mod temp ;
A := temp;
end;
Result := B
end;
begin
i := 6933;
j := 25421;
tmpGCD := getGCD(i, j); ShowMessage(IntToStr(i div tmpGCD) + '/' + IntToStr(j div tmpGCD));
end;
C_Size = 18;
C_pure: array [0..C_Size -1] of Integer = (2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61);//最大公约数
function func2(a, b: Integer): Integer;
var
I: Integer;
begin
I := 0;
Result := 1;
while ((I < C_Size) and (C_pure[I] div 2 < a) and (C_pure[I] div 2 < b)) do
begin
while (a mod C_pure[I] = 0) and (b mod C_Pure[I] = 0) do
begin
Result := Result * C_Pure[I];
a := a div C_Pure[I];
b := b div C_Pure[I];
end;
Inc(I);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
a, b, c: Integer;
begin
a := 6933;
b := 25421;
c := func2(a, b);
showmessage(format('%d/%d = %d/%d(%d)', [a, b, a div c, b div c, c]));
end;
var
s,s1,s2 :string;
i1,i2 : integer;
begin s := edit1.Text ; //edit1.text为84/90 or 10/5之类的分数
s1 := copy(s,1,PosEx('/',s)-1);
s2 := copy(s,PosEx('/',s)+1,length(s)-PosEx('/',s));
i1 := StrToInt(s1);
i2 := strtoint(s2);
wudi(i1,i2);
s := inttostr(i1)+'/'+inttostr(i2);
Caption := s;
end;procedure TForm1.wudi(var s1, s2: integer);
var
i : integer;
begin
if (s1 mod s2) = 0 then
begin
s1 := s1 div s2;
s2 := s2 div s2;
exit;
end;
if (s2 mod s1) = 0 then
begin
s2 := s2 div s1;
s1 := s1 div s1; exit;
end; for I := 9 downto 2 do
begin
if ((s1 mod i)=0) and ((s2 mod i)=0) then
begin
s1 := s1 div i;
s2 := s2 div i;
wudi(s1,s2);
Break;
end;
end;
end;
function G(x,y:Integer):Integer ;
begin
while x<>y do
begin
if x>y then x:=x-y else y:=y-x;
end;
Result:=y;
end;