全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2069
推到 Plurk!
推到 Facebook!

如何寫一個求最大公因數的程式

尚未結案
flycat
一般會員


發表:3
回覆:2
積分:1
註冊:2004-10-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-21 03:53:06 IP:163.28.xxx.xxx 未訂閱
我是新手,請問有人知道 如果要用DELPHI來寫最大公因數的程式,應該要怎麼寫嗎? 我連一點頭緒也沒有,我知道C語言的寫法,但我卻不曉得該怎麼翻譯過來.. 請求高手幫幫忙!
elvis1000
一般會員


發表:6
回覆:50
積分:16
註冊:2004-12-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-21 05:44:09 IP:220.134.xxx.xxx 未訂閱
我用的是全部都檢查的方法,1..最小值(>=GCD),而且可求出n個數的GCD    
Var
  ProgPath, TempPath:string;
  x:array[0..3] of integer=(30,15,120,90); //用來測試,求(30,15,120,90)    implementation    {$R *.DFM}    function GetGCD(n:array of integer):integer;
var
  h,l,i,j,Minn,d,count:integer;
begin
  l:=Low(n);
  h:=high(n);
  Minn:=n[l];
  d:=-1;
  for i:=l to h do
    begin
      if Minn>n[i] then Minn:=n[i];
    end;//for      for j:=1 to Minn do
    begin
      count:=0;
      for i:=l to h do
        begin
          if n[i] mod j<>0 then
            break
          else
            begin
              count:=count 1;
              if count=h-l 1 then d:=j;
            end;//else
        end;//for
    end;//for
  Result:=d;
end;    procedure TMainForm.FormCreate(Sender: TObject);
begin
  Application.Title:=ProgName;
  ProgPath:=ExtractFilePath(Application.ExeName);
  TempPath:=GetTemporaryPath;
  ShowMessage(intToStr(GetGCD(x)));
end;
----------------------- God bless you! I am Dark_Angel.
------
-----------------------
God bless you!
I am Dark_Angel.
writeman
初階會員


發表:31
回覆:34
積分:28
註冊:2004-02-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-21 11:28:07 IP:61.70.xxx.xxx 未訂閱
hi 每本書應該都會介紹這種遞迴的寫法    
procedure TForm1.Button1Click(Sender: TObject);
  function gcd(a, b: integer): integer;
  begin
    if(b = 0)then begin
      result:= a
    end else begin
      result:= gcd(b, a mod b);
    end;
  end;
begin
  showmessage(inttostr(gcd(100, 15)));
end;
flycat
一般會員


發表:3
回覆:2
積分:1
註冊:2004-10-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-31 22:04:46 IP:163.28.xxx.xxx 未訂閱
先跟第一位先回答的人說一聲非常感謝您的幫忙! 之所以沒有給您分數,不是因為您寫的不好,相反的,我相信您寫的非常棒! 只可惜小妹才淺,還是不懂您寫的,第二位回答的人,確實解決了我的問題。 因為之前考慮了好久,應該要給誰分數,畢竟兩位都很熱心的幫助我。 本來想要打算呼巄過去,可惜還是被通知要給分了,考慮許久,決定以解決我問題的人作為得分者,在此跟第一位寶貝說一聲抱歉! 希望您不要生氣,同時也謝謝兩位的熱心幫助!^^
系統時間:2024-06-27 15:29:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!