Programación de números primos en Fortran
{?¿Factorización de números primos simples? }
¿Etiqueta? 999;
Definir variables
n, nn: entero largo;? {?Número de entrada}
d: ¿Matriz [1..10000]? Deseo;{Almacenar números primos}
k: matriz[1..10000]? Entero; {almacena el número de veces que cada número primo es divisible}
I, j: longint; {variable de bucle}
suma: entero;? {La suma de los divisores de todos los números primos}
z: integer; {número de números primos}
s: integer {registrar el número de números primos de salida} p>
¿Función? Su Zhi (n: entero largo): booleano
Definir variables
j, k: entero largo
findd: booleano
Inicio
k:= trunc(sqrt(n));
¿Si? n=1? ¿Entonces qué? Su Zhi: =Falso
¿Y si? ¿si? (n=2) o (n=3)? ¿Entonces qué? Su Zhi: =Así es
¿Y si? Inicio
findd:= false;
j:= 1;
Repetir
j:= j 1;
¿Y si? (n?mod?j)=0? ¿Entonces qué? encontrado:= verdadero;
¿Hasta? ¿encontró? ¿aún? (j gtk);
Su Zhi: ¿No es así? encontrado
Fin;
Fin;
Inicio
¿Para qué? n:=2? ¿A dónde ir? 200 ¿Qué hacer? Inicio
nn:= n;
{¿Lo siguiente es menor que n? ¿div? 2? Números primos almacenados en la matriz d}
z: = 0;
¿Para qué? Yo: =2? ¿A dónde ir? (n?div?2)?¿Qué hacer? ¿si? ¿Su Zhi (yo)? ¿Entonces qué? ¿comenzar? Inc(z);? d[z]:= Yo;? k[z]:= 0;? Fin;
{Lo siguiente es la factorización prima}
¿Para qué? Yo: =1? ¿A dónde ir? z? ¿Hacer lo? Empezar
¿Cuándo? (nn? gt=d[i]) y (nn? mod? d[i]=0)? ¿Hacer lo? Inicio
Inc(k[I]);? nn:=nn? ¿div? d[I];
¿Si? k[i]>1? ¿Entonces qué? ¿ir a? 999; {*********}
Fin
Fin
{Calcular el número de factores primos}
suma:= 0;
¿Para qué? Yo: =1? ¿A dónde ir? z? ¿Hacer lo? suma:= suma k[I];
¿Si? suma lt=1? ¿Y luego qué? ¿ir a? 999; {************}
{Salida}
s:= 0;
ifsum lt2 ¿Y luego qué? writeln(n, ' = ', n)
Otro
Inicio
Escribir(n, ' = ');
Para ¿Qué? Yo: =1? ¿A dónde ir? z? Hacer
¿Y si? k[i]>0? Entonces
¿Para qué? j:=1? ¿A dónde ir? k[yo]? ¿
Iniciar
empresa?
¿Y si? s=suma? ¿Entonces qué? writeln(d[i]:0)? ¿De lo contrario? escribir(d[i]: 0, ' * ');
Fin
Fin
999:
>Fin;
Fin.