*
*验证哥德巴赫猜想 BY Tiger5392 (C)2006-2006
*
* 哥德巴赫猜想是世界近代三大数学难题之一。
*1742年,哥德巴赫在教学中发现,
*每个不小于6的偶数都是两个素数(只能被和它本身整除的数)之和,
*如6=3+3,12=5+7等等。
* 当年,哥德巴赫写信给当时的大数学家欧拉,提出了以下的猜想:
* (a)任何一个≥6之偶数,都可以表示成两个奇质数之和。
* (b)任何一个≥9之奇数,都可以表示成三个奇质数之和。
*这就是著名的哥德巴赫猜想。
* 目前最佳的结果是中国数学家陈景润于1966年证明的,称为陈氏定理(ChensTheorem)。
*“任何充分大的偶数都是一个质数与一个自然数之和,而后者仅仅是两个质数的乘积”,
*通常都简称这个结果为大偶数,可表示为“1+2”的形式。
*
* 本程序试图验证给定任意一个整数N≥6如它是偶数的话,可写成2个奇素数之和;
*若它是奇数的话,可写成3个奇素数之和。
*
PARAMETERS N
IF TYPE("N")!=CHR(78) OR INT(N)!=N OR N<6
RETURN "请输入参数,或参数为整数,或参数为大于等于6"
ENDIF
IF MOD(N,2)=0 &&偶数
FOR I=3 TO N/2 STEP 2
IF PN(I) AND PN(N-I)
?ALLTRIM(STR(N))+"="+ALLTRIM(STR(I))+"+"+ALLTRIM(STR(N-I))
ENDIF
ENDFOR
ELSE
FOR I=3 TO N/3 STEP 2
FOR J=3 TO N/3 STEP 2
IF PN(I) AND PN(J) AND PN(N-I-J)
?ALLTRIM(STR(N))+"="+ALLTRIM(STR(I))+"+"+ALLTRIM(STR(J))+"+"+ALLTRIM(STR(N-I-J))
ENDIF
ENDFOR
ENDFOR
ENDIF
RETURN "成功运行"
FUNCTION PN
PARAMETERS X
PRIVATE X,I,OK
IF TYPE("X")!=CHR(78) OR INT(X)!=X OR X<=2
RETURN .F.
ENDIF
OK=.T.
FOR I=3 TO SQRT(X)
IF MOD(X,I)=0
OK=.F.
EXIT
ENDIF
ENDFOR
RETURN OK