Red de conocimiento informático - Aprendizaje de programación - Programación de números primos en Fortran

Programación de números primos en Fortran

El siguiente es un programa Pascal para su referencia:

{?¿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}

¿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.