DECLARE SUB Mult2 () DECLARE SUB ShowNum () DECLARE FUNCTION dMod# (a#, b#) DEFINT A-Z DIM SHARED a(1 TO 1000) AS DOUBLE, np, dec, nfermat DIM SHARED b(1 TO 1000) AS DOUBLE CLS nfermat = 16 dec = 9 a(1) = 1: np = 1 FOR i& = 1 TO 2 ^ nfermat LOCATE 1, 1: PRINT USING "#####> "; i&; Mult2 LOCATE 2, 1 SELECT CASE INKEY$ CASE CHR$(27): EXIT FOR CASE " ": ShowNum END SELECT NEXT a(1) = a(1) + 1 ShowNum FOR i = 1 TO np: b(i) = a(i): NEXT FOR k& = 1 TO 100000 LOCATE 5, 1: PRINT k&; div# = 2# ^ (nfermat + 2) * k& + 1 PRINT div#; IF div# >= 10# ^ dec THEN PRINT "Max"; : SYSTEM FOR i = 1 TO np: a(i) = b(i): NEXT FOR i = np TO 1 STEP -1 x# = INT(a(i) / div#) y# = dMod(a(i), div#) a(i) = x# IF y# > 0 THEN IF i = 1 THEN PRINT "Ndiv"; : er = -1: EXIT FOR ELSE a(i - 1) = a(i - 1) + y# * 10# ^ dec END IF END IF NEXT IF er THEN er = 0 ELSE ShowNum: SYSTEM IF INKEY$ <> "" THEN EXIT FOR NEXT SYSTEM FUNCTION dMod# (a#, b#) d# = ((a# / b#) - INT(a# / b#)) * b# IF d# < 1D-35 THEN d# = 0 dMod# = d# END FUNCTION SUB Mult2 nbase# = 10# ^ dec FOR i = 1 TO np a(i) = a(i) * 2 NEXT FOR i = 1 TO np x = INT(a(i) / nbase#) IF x > 0 THEN y# = dMod(a(i), nbase#) a(i + 1) = a(i + 1) + x a(i) = y# END IF NEXT IF x > 0 THEN np = np + 1 END SUB SUB ShowNum x$ = "" FOR i = np TO 1 STEP -1 IF a(i) > 0 OR i < np THEN PRINT RIGHT$(x$ + LTRIM$(STR$(a(i))), dec); x$ = STRING$(dec, "0") END IF NEXT END SUB