|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
朱育興
註冊時間: 2003-08-25 文章: 661 來自: 台中市大里區
第 1 樓
|
發表於: 星期日 十二月 21, 2003 11:19 am 文章主題: [原創]判斷質數之函數 |
|
|
* 為求排版美觀,空白為全形空白,若要測試請將全形空白改為半形空白
* -------------------------------------------------------
* Example 1:找出 100 以內的所有質數
M_nInputNum = 100 && 找出 N 以內的所有質數
M_nLength4InputNum = LEN(LTRIM(STR(M_nInputNum)))
M_nRCount = 0
FOR M1_nSUB_A = 1 TO M_nInputNum
WAIT WIND "計算中..."+LTRIM(STR(M1_nSUB_A))+"/"+LTRIM(STR(M_nInputNum)) NOWAIT
IF F_Prime(M1_nSUB_A)
M_nRCount = M_nRCount + 1
IF M_nRCount != 1
?? ","
ENDIF
?? LTRIM(STR(M1_nSUB_A))
ENDIF
ENDFOR
WAIT CLEAR
RETURN
* -------------------------------------------------------
FUNCTION F_Prime
* -------------------------------------------------- *
* 說明:
* 判斷該正整數是否為質數
* 2003.12.25 朱育興 YSC E-MAIL: y5096@ms23.hinet.net
* -------------------------------------------------- *
* Input:
* Li_nInputNum N 正整數,代表要判斷的數;
* Output:
* Lo_lPrime L 1.是否為質數。
* 2.若 Li_nInputNum 不為正整數,
* 傳回值 = .F.。
* -------------------------------------------------- *
* Example:
* ? F_Prime(1) && --> .F.
* ? F_Prime(2) && --> .T.
* ? F_Prime(3) && --> .T.
* ? F_Prime(9) && --> .F.
* -------------------------------------------------- *
PARAMETERS Li_nInputNum
LOCAL W1_nSqrtNum,W1_nSUB_A
Lo_lPrime = .T.
DO CASE
CASE PCOUNT() = 0
Lo_lPrime = .F.
CASE TYPE("Li_nInputNum") != "N"
Lo_lPrime = .F.
CASE Li_nInputNum <= 1
Lo_lPrime = .F.
CASE MOD(Li_nInputNum,INT(Li_nInputNum)) != 0
Lo_lPrime = .F.
CASE MOD(Li_nInputNum,2) = 0 AND Li_nInputNum != 2
Lo_lPrime = .F.
OTHERWISE
W1_nSqrtNum = INT(SQRT(Li_nInputNum))
FOR W1_nSUB_A = 3 TO W1_nSqrtNum STEP 2
IF MOD(Li_nInputNum,W1_nSUB_A) = 0
Lo_lPrime = .F.
EXIT
ENDIF
ENDFOR
ENDCASE
RETURN Lo_lPrime |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|