vfp 求10-100之间的互逆素数(如13是素数 31也是素数)
求10-100之间的互逆素数(如13是素数 31也是素数)
FOR i = 10 TO 100 IF isPrimer(i) IF isPrimer(inverse(i)) ? i ENDIF ENDIF ENDFOR FUNCTION isPrimer(n) LOCAL i, Ret Ret = .T. FOR i = 2 TO SQRT(n) IF n % i == 0 Ret = .F. EXIT ENDIF ENDFOR RETURN Ret ENDFUNC FUNCTION inverse(n) LOCAL m, a m = 0 DO WHILE n > 0 a = n % 10 m = m * 10 + a n = INT(n / 10) ENDDO RETURN m ENDFUNC
FOR lnI=10 TO 100 IF IsPrime(lnI)=.T. Y=0 X=lnI DO WHILE X!=0 Y=MOD(X,10)+Y*10 X=INT(X/10) ENDDO IF IsPrime(Y)=.T. MESSAGEBOX(STR(lnI)+"与"+STR(Y)+"互逆素数") ENDIF ENDIF ENDFOR 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