对称素数之和算法

作者在 2015-04-11 02:06:40 发布以下内容



CLEAR
DO WHILE .T.
    INPUT "请输入11-1000000之间的任意数:" TO N
    IF N>10^6 OR N<11
        MESSAGEBOX("数字超出范围,请重新输入!")
        LOOP
    ELSE
        EXIT
    ENDIF
ENDDO
S=2+3+5+7
C=4
FOR LNI=11 TO N
	X=LNI
	Y=0
	DO WHILE X!=0
		Y=X%10+Y*10
		X=INT(X/10)
	ENDDO
	IF Y=LNI AND INLIST(LNI%10,1,3,7,9) AND ISPRIME(Y)=.T.
	    C=C+1
*		?C,Y && 显示素数
		S=S+Y
	ENDIF
ENDFOR
?"对称素数之和为:",S,"对称素数个数为:",C
*-----------------------------------
* 素数判断函数
FUNCTION ISPRIME(N)
LOCAL I
IF N <= 3
	RETURN  N > 1
ENDIF
IF (N % 2 == 0) OR (N % 3 == 0)
	RETURN  .F.
ENDIF
I = 5
DO WHILE I * I <= N
	IF (N % I == 0) OR (N % (I + 2) == 0)
		RETURN .F.
	ENDIF
	I = I + 6
ENDDO
RETURN .T.
ENDFUNC


算法 | 阅读 1631 次
文章评论,共0条
游客请输入验证码
浏览402283次