作者在 2006-08-26 08:12:00 发布以下内容
***
*** FUNCTION SP V1.00 (C)Copyright By Tiger5392
***
*** 一个素数,依次从个位数开始去掉一位,两位,。。。所得的各数仍然是素数,称为超级素数。
***本程序就是用来判断一个数是不是超级素数。
***
*** 用法:?SP(nExpr)
*** 参数:nExpr为数值型数据,它为大于1的整数。
*** 返回:若为超级素数则返回逻辑真(.T.);否则返回逻辑假(.F.)。
***
PARAMETERS nNum
PRIVATE nNum,nNum1,cNum,nCnt1,nCnt2,lOk
SET TALK OFF
IF TYPE([nNum])!=CHR(78)
RETURN [没有参数或参数不为数值]
ENDIF
IF INT(nNum)!=nNum OR nNum<2
RETURN [参数应为大于1的正整数]
ENDIF
cNum=ALLTRIM(STR(nNum))
lOk=.T.
FOR nCnt1=0 TO LEN(cNum)-1
nNum1=VAL(SUBSTR(cNum,1,LEN(cNum)-nCnt1))
IF nNum1=1
lOk=.F.
EXIT
ENDIF
FOR nCnt2=2 TO SQRT(nNum1)
IF MOD(nNum1,nCnt2)=0
lOk=.F.
EXIT
ENDIF
ENDFOR
ENDFOR
RETURN lOK
***EOF():2006-08-25 By Tiger5392
*** FUNCTION SP V1.00 (C)Copyright By Tiger5392
***
*** 一个素数,依次从个位数开始去掉一位,两位,。。。所得的各数仍然是素数,称为超级素数。
***本程序就是用来判断一个数是不是超级素数。
***
*** 用法:?SP(nExpr)
*** 参数:nExpr为数值型数据,它为大于1的整数。
*** 返回:若为超级素数则返回逻辑真(.T.);否则返回逻辑假(.F.)。
***
PARAMETERS nNum
PRIVATE nNum,nNum1,cNum,nCnt1,nCnt2,lOk
SET TALK OFF
IF TYPE([nNum])!=CHR(78)
RETURN [没有参数或参数不为数值]
ENDIF
IF INT(nNum)!=nNum OR nNum<2
RETURN [参数应为大于1的正整数]
ENDIF
cNum=ALLTRIM(STR(nNum))
lOk=.T.
FOR nCnt1=0 TO LEN(cNum)-1
nNum1=VAL(SUBSTR(cNum,1,LEN(cNum)-nCnt1))
IF nNum1=1
lOk=.F.
EXIT
ENDIF
FOR nCnt2=2 TO SQRT(nNum1)
IF MOD(nNum1,nCnt2)=0
lOk=.F.
EXIT
ENDIF
ENDFOR
ENDFOR
RETURN lOK
***EOF():2006-08-25 By Tiger5392