請問要怎麼寫一個質數相加的程式.... |
尚未結案
|
mp6dk284
一般會員 ![]() ![]() 發表:4 回覆:8 積分:2 註冊:2004-12-10 發送簡訊給我 |
|
ddy
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
|
mp6dk284
一般會員 ![]() ![]() 發表:4 回覆:8 積分:2 註冊:2004-12-10 發送簡訊給我 |
不好意思~我還不太了解這邊的規定...以下是一個類似的程式碼(奇數相加)..給一個數字10 run出結果:1+3+5+7+9=25
procedure TForm1.Button1Click(Sender: TObject); var i, xNo, xSum :integer; begin xNo:=strtoint(edit1.text); xSum:=0; for i:=1 to xNo do begin if i mod 2 =1 then xSum:= xSum i; end; label2.Caption:= inttostr(xSum); end; procedure TForm1.Button2Click(Sender: TObject); begin edit1.Text:=''; label2.Caption:=''; end; end. 請問在判斷那邊應該如何假設ㄋ?? 麻煩妳們嚕!! |
writeman
初階會員 ![]() ![]() 發表:31 回覆:34 積分:28 註冊:2004-02-17 發送簡訊給我 |
hi
要把質數相加要先判斷該數是否為質數
以下用isprime函數來實現
整個程式大致是這樣子
procedure TForm1.Button1Click(Sender: TObject); var i: integer; sum: integer; function isprime(no: integer): boolean; var i, j: integer; begin result:= false; if(no = 1)then exit; j:= trunc(sqrt(no)); for i:= 2 to j do begin if(no mod i = 0)then exit; end; result:= true; end; begin sum:= 0; for i:= 1 to 10 do begin if(isprime(i))then sum:= sum i; end; showmessage(inttostr(sum)); end; |
mp6dk284
一般會員 ![]() ![]() 發表:4 回覆:8 積分:2 註冊:2004-12-10 發送簡訊給我 |
|
writeman
初階會員 ![]() ![]() 發表:31 回覆:34 積分:28 註冊:2004-02-17 發送簡訊給我 |
|
mp6dk284
一般會員 ![]() ![]() 發表:4 回覆:8 積分:2 註冊:2004-12-10 發送簡訊給我 |
引言:引言: 這位大大您好阿!! 在請教妳一ㄍ問題~今天如果我只是要做一個輸入一個數字~然後判斷是否為質數run出結果會出現:true or false 應該在程式ㄉ哪邊做修正ㄋ~還是不可以這樣寫ㄋ?? 麻煩妳嚕!!hi 直接套用上面的isprime就行了 假設輸入值是7if(isprime(7))then begin showmessage('是質數'); end else begin showmessage('不是質數'); end;那我如果要把那個輸入値,寫成我自己可以任意輸入數字又該如何寫這個程式呢? 可以麻煩你把整個架構寫給我看ㄇ?? 我是初學者還有很多地方不懂 還忘多多指教!! |
writeman
初階會員 ![]() ![]() 發表:31 回覆:34 積分:28 註冊:2004-02-17 發送簡訊給我 |
引言: 那我如果要把那個輸入値,寫成我自己可以任意輸入數字又該如何寫這個程式呢? 可以麻煩你把整個架構寫給我看ㄇ??放一個edit元件 放一個button元件 當按下button時,把edit裡的值拿來給isprime算算 procedure TForm1.Button1Click(Sender: TObject); function isprime(no: integer): boolean; var i, j: integer; begin result:= false; if(no = 1)then exit; j:= trunc(sqrt(no)); for i:= 2 to j do begin if(no mod i = 0)then exit; end; result:= true; end; begin if(isprime(strtoint(edit1.text)))then begin showmessage('是質數'); end else begin showmessage('不是質數'); end; end; |
mp6dk284
一般會員 ![]() ![]() 發表:4 回覆:8 積分:2 註冊:2004-12-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |