DECLARE FUNCTION Pot2& (expo&, md&) DECLARE FUNCTION IsPrime& (prime&) DEFLNG A-Z CLS PRINT "Mersenne 1.0" PRINT DO INPUT "p=", p LOOP UNTIL IsPrime(p) AND (p MOD 2 = 1) PRINT "M"; p; "= 2 ^"; p; "-1" PRINT prime = 1 DO prime = prime + 2 * p IF prime MOD 8 = 1 OR prime MOD 8 = 7 THEN IF IsPrime(prime) THEN pt = Pot2(p, prime) LOCATE CSRLIN, 1: PRINT prime; pt; IF pt = 1 THEN PRINT "Fator :"; prime: SYSTEM END IF END IF LOOP UNTIL prime > 2 ^ (p \ 2) PRINT "Primo" SYSTEM FUNCTION IsPrime (prime) FOR i = 3 TO SQR(prime) STEP 2 IF prime MOD i = 0 THEN EXIT FUNCTION NEXT IsPrime = -1 END FUNCTION FUNCTION Pot2 (expo, md) a = 2 FOR i = 2 TO expo: a = (2 * a) MOD md: NEXT Pot2 = a END FUNCTION