用VFP验证哥德巴赫猜想

作者在 2006-09-01 17:03:00 发布以下内容

*
*验证哥德巴赫猜想  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

VFP程序 | 阅读 2927 次
文章评论,共0条
游客请输入验证码
浏览118799次