Bueno, pues vamos con la
versión 2 de mi rutina BASIC. En esta ocasión he cuidado un pelín más el aspecto en pantalla, aligerado un poco el código, e implementado dos nuevos procesos de ahorro de tiempo de comprobación de números. Además, el programa ahora muestra la hora de inicio y final de procesamiento para saber el tiempo invertido total.
Los cuatro
truquitos implementados hasta el momento se basan en que:
1. No existen números primos pares mayores de 2.
2. No existen números primos terminados en 5 mayores que 5. Si terminan en 5, no son primos.
3. La suma de los dígitos de cada número a prueba mayor que 3 no puede ser divisible entre 3. Si lo es, no es primo.
4. No es necesario comprobar todos los divisores entre 2 y el número a prueba, sino sólo entre 2 y la parte entera de la raíz cuadrada del número.
[El truco del OP de los factoriales no lo he entendido, y por tanto, no lo he aplicado]
10 KEY OFF:CLS
20 PRINT "CALCULADORA DE NUMEROS PRIMOS v2.0"
30 PRINT "(c) 2024 by WEKurtz":PRINT
40 PRINT "Calcula los numeros primos entre 1 y el numero introducido"
50 PRINT"y muestra el tiempo invertido en calcularlos.":PRINT
60 INPUT "Introduzca numero: ",N
70 PRINT:PRINT 2,
80 TI$=TIME$
90 FOR A=3 TO N STEP 2
100 A$=STR$(A)
110 X$=RIGHT$(A$,1)
120 IF A>5 AND X$="5" THEN 190
130 P=0:FOR D=2 TO LEN(A$):P=P+VAL(MID$(A$,D,1)):NEXT
140 IF P>3 AND P/3=INT(P/3) THEN 190
150 FOR F=2 TO INT(SQR(A))
160 IF A/F=INT(A/F) THEN 190
170 NEXT F
180 PRINT A,
190 NEXT A
200 TF$=TIME$
210 PRINT:PRINT CHR$(13)"Inicio: "TI$:PRINT"Fin: "TF$
Lo siguiente que voy a hacer es aligerar más introduciendo los primos encontrados
en memoria en lugar de ir poniéndolos en pantalla, pues esto, unido al scroll, consume demasiado tiempo. Se tomará como tiempo de proceso el momento en que termine de alojar los números, y sólo después los presentará en pantalla.
NOTA: Quien quiera probar, que copie el código, abra un bloc de notas, lo pegue allí, lo grabe como "primos.bas", instale el intérprete PCBASIC para Windows
AQUÍ, lo ejecute, introduzca
load"primos.bas" y luego ejecute el programa con
run.
¡Qué pasada, mamá! ¡He vuelto a programar en BASIC!

¡Qué bonito es, coño...!