用VFP计算两个正整数的最大公约数及最小公倍数

by admin on 2020年2月2日

***
***C33选6 (C)Copyright 2006-2006 Tiger5392
***
SET TALK OFF
DIMENSION acCaipiao(6)
PRIVATE acCaipiao,cText,nCnt,lOk,J
acCaipiao=[00]
cText=[]
nCnt=1
DO WHILE nCnt<=6
  nRand=PADL(INT(RAND()*33+1),2,”0″)
  lOk=.T.
  FOR J=1 TO nCnt
    IF acCaipiao(J)=nRand
      lOk=.F.
      EXIT
    ENDIF
  ENDFOR
  IF lOk
    acCaipiao(nCnt)=nRand
澳门新葡亰平台官网,    nCnt=nCnt+1
  ENDIF
ENDDO
ASORT(acCaipiao)
FOR nCnt=1 TO 6
  cText=cText+acCaipiao(nCnt)+IIF(nCnt<6,[,],[])
ENDFOR
RETURN cText

*
*申明哥德Bach估摸  BY 泰格5392 (C卡塔尔国二〇〇五-二〇〇六
*
*    哥德巴赫推断是世界近代三大数学难题之大器晚成。
*1742年,哥德Bach在教学中发觉,
*每种超大于6的偶数都以多少个素数(只能被和它自己整除的数)之和,
*如6=3+3,12=5+7等等。
*    当年,哥德Bach写信给那时的大科学家欧拉,建议了以下的估计:
*  (a卡塔尔任何贰个≥6之偶数,都得以象征成多个奇质数之和。
*  (b卡塔尔任何叁个≥9之奇数,都足以代表成四个奇质数之和。
*那正是响当当的哥德Bach推断。
*   
方今一流的结果是华夏物法学家陈景润于壹玖陆捌年认证的,称为陈氏定理(Chens西奥rem)。
*“任何丰裕大的偶数都以贰个质数与一个自然数之和,而后面一个仅仅是四个质数的乘积”,
*日常说来都简单称谓那个结果为大偶数,可代表为“1+2”的样式。
*
*   
本程序试图求证给定任性二个整数N≥6如它是偶数的话,可写成2个奇素数之和;
*若它是奇数的话,可写成3个奇素数之和。
*
PARAMETERS N
IF TYPE(“N”)!=CHR(78) OR INT(N)!=N OR N<6
  RETUSportageN “请输入参数,或参数为整数,或参数为超越等于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
RETU马自达MX-5N  “成功运营”

****
****   GBSGYS  V1.00 (C)Copyright 2006-2006 By Tiger5392
****
****    功能
****          计算八个正整数的最大左券数及最小公倍数
****
****    用法
****          ?GYSGBS(nExpr1,nExpr2,nExpr3)
****
****    参数
****          nExpr1 第一个正整数
****          nExpr2 次之个正整数
****          nExpr3 如为0则计算最大左券数;如为1则总计最小公倍数
****
****    返回
****          最小公倍数或最大合同数
****
PARAMETERS nNum1,nNum2,nControl
PRIVATE nNum1,nNum2,nControl,nCount
SET TALK OFF
IF TYPE(“nNum1”)#CHR(78) OR INT(nNum1)#nNum1 OR nNum1<=0
  RETURN “****”
ENDIF
IF TYPE(“nNum2”)#CHR(78) OR INT(nNum2)#nNum2 OR nNum2<=0
  RETURN “****”
ENDIF
IF TYPE(“nControl”)#CHR(78) OR nControl#0 AND nControl#1
  RETURN “****”
ENDIF
IF nControl=1
  FOR nCount=MAX(nNum1,nNum2) TO nNum1*nNum2
    IF MOD(nCount,nNum1)=0 AND MOD(nCount,nNum2)=0
      EXIT
    ENDIF
  ENDFOR
ELSE
  FOR nCount=MIN(nNum1,nNum2) TO 1 STEP -1
    IF MOD(nNum1,nCount)=0 AND MOD(nNum2,nCount)=0
      EXIT
    ENDIF
  ENDFOR
ENDIF
RETURN nCount
**** EOF: GYSGBS (C)Copyright  By Tiger5392

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图