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