素数——判断一个数是否为超级素数

素数——判断一个数是否为超级素数,第1张

素数——判断一个数是否为超级素数,第2张

* * *由Tiger 5392 (c)判断一个数是否为超级质数版权所有2006-2006
*** * *
* * *相关知识
* * *超级质数:一个质数,去掉一位后就是一个质数;去掉一位数和十位数也是质数;......;
***它仍然是一个质数,直到它被保留在适当的位置。这个质数叫做超级质数。
* * *
* *编程思路
* * 1。质数不能是1。如果给定的数是一个超级素数,那么高位不能是1。
*** 2。质数不能被2整除(2除外)。如果给定的数字是一个超级质数,每个数字不能包含0,2,4,6,8(除了上面的2)。
*** 3。质数不能被5整除(5除外)。如果给定的数字是一个超级质数,每个数字不能包含0,5(除了上面的5)。
*** 4。经过分析,有这样的结论:
* * (1)高位可能是2,3,5,7,但绝对不是0,1,4,6,8,9;
*** (2)除高位以外的其他位数可以是1,3,7,9,但绝对不能是0,2,4,5,6,8。
* * *
参数nNum
PRIVATE nNum,nNum1,cNum,nCnt,lIsSupperPrime
IF TYPE(" nNum ")# CHR(78)或INT(nNum)#nNum或nNum RETURN . f .
ENDIF
lIsSupperPrime = INLIST(VAL(SUBSTR(all trim(STR(nNum)),1,1)),2,3,5,7) &提取高位并判断F.
返回。F.
endif
for NCNT = 0到len (Alltrim (str (NNUM))-1
。& &从原始数中删除nCnt位
CNUM = substr(all trim(str(nnum 1)),2) &&如果" 0 " $ cnumor " 2 " $ cnumor " 4 " $ cnumor " 5 " $ cnumor " 6 " $ cnumor " 8 " $ CNUM
LisSupperPrime =,则提取除高位以外的其余位。f .[/]is prime(nnum 1)
lIsSupperPrime = . f .
EXIT
ENDIF
end for
RETURN lIsSupperPrime
* * * EOF():issue prime By tiger 5392(C)版权所有2006-2006

FUNCTION is prime
参数nNumber
PRIVATE nNumber,lOk,nCnt
IF n number lOk = INLIST(n number,2,3,5,7)
ELSE
IF MOD(nNumber,2)=0或MOD(nNumber,3)=0或MOD(nNumber,5)=0或MOD(n number,7)= 0
lOk = . f .
ELSE
lOk = . t

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 素数——判断一个数是否为超级素数

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情