Sunday, January 7, 2018

Generare n numere prime

Numerele prime sunt acelea care sunt divizibile prin 1 și prin ele însele. A genera N numere prime înseamnă:
- se inițializează o variabilă K=1;
- a genera un număr impar A=2*L+1;
- a extrage radicalul din numerul impar A, obținând numărul B;
- dacă la extragerea radicalului partea zecimală este nulă, A nu este număr prim.
- a împărți numărul B la toate numele de la 2 la B-1;
- dacă una dintre împărțiri nu are rest înseamnă că numărul A nu este prim;
- dacă toate împărțirile sunt cu rest, X(K)=A și K=K+1;
- se majorează numărul A, A=A+2;
- procedeul se reia de la extragerea de radical atât timp cât K este mai mic decât N.
Subprogramul GNPRIM(...) generează un șir de N,  numere prime cu N mai mare decât 5 și mai mic decât 1001.

             SUBROUTINE GNPRIM(N,X,IK)
             DIMENSION X(1000) /1,2,3,5,7/
             IK=0
             IF((N.LT.5).OR.(N.GT.100))  GO TO 30
             K=6
             A=11.
10         CONTINUE
             B=SQRT(A)
             IVAL=INT(B)
             AVAL=IVAL
             IF((IVAL-B).EQ.0)  GO TO  30
             DO   20   I=2,IVAL-1
             AI=I
             IF(AMOD(AVAL,AI).EQ.0)  GO TO 30
20         CONTINUE 
             X(K)=A
             K=K+1
 30         CONTINUE
             A=A+1
             IF(K.LT.N) GO  TO  10
 40        CONTINUE 
             IK=1
              RETURN
             END 
Observăm că apar multe instrucțiuni GO TO datorită faptului că nu există implementare pentru structura DO-UNTIL
(07 ianuare 2018)       


No comments:

Post a Comment