home *** CD-ROM | disk | FTP | other *** search
-
- PROGRAM PRIMES;
- VAR
- PRIME : BOOLEAN;
- I,J,K,N,MAX : INTEGER;
- L, SQU : INTEGER;
- P : ARRAY[1..1296] OF INTEGER;
- U : ARRAY[1..36] OF INTEGER;
- BEGIN
- WRITELN('PROGRAM TO DETERMINE THE FIRST N PRIME INTEGERS');
- WRITELN;
- WRITELN('ENTER N, THE DESIRED NUMBER OF PRIME INTEGERS: MAX = 3512');
- READLN(N);
- P[1] := 2; L := 1; SQU := 4; MAX := 1;
- FOR I := 2 TO N + 10 - (N MOD 10) DO
- BEGIN
- REPEAT
- L := L+2;
- IF SQU <= L THEN
- BEGIN
- U[MAX] := SQU;
- MAX := MAX+1;
- SQU := P[MAX]*P[MAX]
- END;
- K := 2; PRIME := TRUE;
- WHILE PRIME AND (K<MAX) DO
- BEGIN
- IF U[K] < L THEN U[K] := U[K] + P[K];
- PRIME := (L <> U[K]);
- K := K+1
- END;
- UNTIL PRIME;
- P[I] := L;
- IF (I MOD 10 = 0) THEN
- BEGIN
- IF I > N THEN
- BEGIN
- WRITELN;
- FOR J := I-9 TO N DO WRITE(P[J], ' ');
- END
- ELSE
- BEGIN
- WRITELN;
- FOR J := I-9 TO I DO WRITE(P[J], ' ');
- END;
- END;
- END;
- END.
-
- (* Listing 1 Prime Number Program *)
-
-
-
-
-
- PROGRAM RANDOM;
- VAR A,X,M,R : INTEGER[36];
- N : INTEGER;
- BEGIN
- WRITELN('PROGRAM TO GENERATE A SEQUENCE OF PSUEDO RANDOM NUMBERS');
- WRITELN;
- WRITELN('ENTER NUMBER OF INTEGERS DESIRED');
- READLN(N);
- WRITELN;
- A := 4294967299;
- M := 184467440737095516;
- WRITELN('ENTER SEED INTEGER: SHOULD BE PRIME FOR MAXIMUM PERIOD');
- READLN(X);
- WRITELN;
- WHILE N>0 DO
- BEGIN
- X := A*X;
- R := X DIV M;
- X := X-R*M;
- WRITELN(X);
- N := N-1;
- END
- END.
-
-
- (* Listing 2 Random Integer Generator *)
-
- PROGRAM RAND16;
- VAR A,X,M,R : INTEGER[36];
- N : INTEGER;
- BEGIN
- WRITELN('PROGRAM TO GENERATE A SEQUENCE OF PSUEDO RANDOM NUMBERS');
- WRITELN;
- WRITELN('ENTER NUMBER OF INTEGERS DESIRED');
- READLN(N);
- WRITELN;
- WRITELN('ENTER ODD SEED INTEGER < 32767');
- READLN(X);
- WRITELN;
- WHILE N>0 DO
- BEGIN
- X := 181*X;
- IF X<0 THEN X := X+32767+1;
- WRITELN(X);
- N := N-1
- END
- END.
-
- (* Listing 3 16-bit Random Integer Generator *)
-
-
-
- PROGRAM EXP1;
- VAR A,A1,AMOD,B,P,P1,PROD,R: INTEGER[36];
- BEGIN
- WRITELN('PROGRAM FOR FINDING (A EXP (B-1)/2) MOD B');
- WRITELN;
- WRITELN('ENTER B, THE MODULUS');
- READLN(B);
- WRITELN('ENTER A SUCCESSION OF TEST INTEGERS: ');
- WRITELN('ENTER ZERO TO TERMINATE');
- WRITELN;
- READLN(A);
- A1 := A;
- WHILE A>0 DO
- BEGIN
- WRITELN;
- PROD := 1;
- P := (B-1) DIV 2;
- AMOD := A;
- WHILE P>0 DO
- BEGIN
- P1 := P;
- P := P DIV 2;
- IF (2*P) <> P1 THEN
- BEGIN
- PROD := PROD*AMOD;
- R := PROD DIV B;
- PROD := PROD-B*R
- END;
- AMOD := AMOD*AMOD;
- R := AMOD DIV B;
- AMOD := AMOD-B*R
- END;
- IF PROD = 1 THEN
- WRITELN('THE MODULAR EXPONENTIAL IS +1')
- ELSE
- IF (B-PROD)=1 THEN
- WRITELN('THE MODULAR EXPONENTIAL IS -1')
- ELSE
- WRITELN('THE MODULAR EXPONENTIAL IS ', PROD);
- WRITELN;
- WRITELN('========================================');
- READLN(A);
- A1 := A
- END
- END.
-
- (* Listing 4 Modular Exponentiation Program *)
-
-
-
- PROGRAM PRIMTEST;
- VAR
- A,B,B1,R : INTEGER[36];
- SGN,N,N1 : INTEGER;
- BEGIN
- WRITELN('PROGRAM FOR TESTING ODD INTEGERS FOR PRIMALITY');
- WRITELN;
- WRITELN('ENTER B, THE NUMBER TO BE TESTED');
- READLN(B1);
- WRITELN('ENTER NUMBER OF TEST INTEGERS');
- READLN(N1);
- N := N1;
- WHILE N>0 DO
- BEGIN
- B := B1;
- WRITELN('NUMBER TO BE TESTED IS ', B);
- WRITELN('ENTER TEST INTEGER A<B');
- READLN(A);
- WHILE B1<(A+1) DO
- BEGIN
- WRITELN('INVALID TEST INTEGER.... TRY AGAIN!');
- READLN(A);
- END;
- WRITELN;
- SGN := 1;
- WHILE A>1 DO
- BEGIN
- IF ((A DIV 2)*2) <> A THEN
- BEGIN
- R := B DIV A;
- R := B-R*A;
- IF (((A-1) DIV 4)*2)<>((A-1) DIV 2) THEN
- IF (((B-1) DIV 4)*2) <> ((B-1) DIV 2) THEN
- SGN := -SGN;
- B := A; A := R
- END
- ELSE
- BEGIN
- A := A DIV 2;
- IF (((B-1) DIV 4)*2) = ((B-1) DIV 2) THEN
- IF (((B-1) DIV 8)*2) <> ((B-1) DIV 4) THEN
- SGN := -SGN
- ELSE SGN := SGN
- ELSE
- IF (((B+1) DIV 8)*2) <> ((B+1) DIV 4) THEN
- SGN := -SGN
- ELSE
- SGN := SGN
- END
- END;
- IF A = 1 THEN
- BEGIN
- WRITELN('GCD = 1; J = ', SGN);
- WRITELN('======================================');
- WRITELN
- END;
- IF A=0 THEN
- BEGIN
- WRITELN('GCD = ', B);
- WRITELN(' NUMBER IS NOT PRIME');
- WRITELN('++++++++++++++++++++++++++++++++++++++')
- END;
- N := N-1
- END
- END.
-
- (* Listing 5 Primality Test *)
-
-
-
-
- PROGRAM EUCLID;
- VAR
- A,B,B1,R : INTEGER[36];
- BEGIN
- WRITELN('PROGRAM TO FIND GREATEST COMMON DENOMINATOR GCD(A,B)');
- WRITELN;
- WRITELN('ENTER VALUE OF B');
- READLN(B1);
- WRITELN;
- WRITELN('ENTER A VALUES IN SUCCESION');
- WRITELN('ENTER ZERO TO TERMINATE');
- WRITELN;
- READLN(A);
- WHILE A>0 DO
- BEGIN
- WHILE A>0 DO
- BEGIN
- B := B1;
- R := B DIV A;
- R := B-R*A;
- B := A;
- A := R;
- END;
- WRITELN(' ', B);
- WRITELN('---------------------------------------------------');
- READLN(A)
- END
- END.
-
- (* Listing 6 Euclid's Algorithm *)
-
-
-
- PROGRAM MULINV;
- VAR
- M,M1,N,Q,U,V,Y,Z : INTEGER[36];
- BEGIN
- WRITELN('PROGRAM FOR FINDING U SUCH THAT, FOR GIVEN V, V*U MOD M=1');
- WRITELN;
- WRITELN('ENTER V');
- READLN(V);
- WRITELN('ENTER M');
- READLN(M);
- M1 := M;
- U := 1;
- Y:= 0;
- WHILE M>0 DO
- BEGIN
- Q := V DIV M;
- Z := Y;
- N := M;
- Y := U-Q*Y;
- U := Z;
- M := V-Q*M;
- V := N;
- END;
- IF U<0 THEN U := M1+U;
- IF V<>1 THEN WRITELN('V AND M ARE NOT RELATIVELY PRIME')
- ELSE WRITELN('V AND M ARE RELATIVELY PRIME: VALUE OF U IS ',U);
- END.
-
- (* Listing 7 Modular Multiplicative Inverse Program *)
-
-
-
- PROGRAM ENCRYPT;
- VAR
- E,E1,E2,N,P,PMOD,PROD,R : INTEGER[36];
- BEGIN
- WRITELN('THIS PROGRAM IMPLEMENTS THE RSA ALGORITHM');
- WRITELN('FOR ENCRYPTING OR DECRYPTING');
- WRITELN;
- WRITELN('ENTER THE MODULUS N');
- READLN(N);
- WRITELN;
- WRITELN('ENTER KEY FOR ENCRYPTING OR DECRYPTING');
- READLN(E);
- WRITELN;
- WRITELN('ENTER INTEGERS TO BE ENCODED IN SUCCESSION');
- WRITELN('ENTER ZERO TO TERMINATE');
- READLN(P);
- E2 := E;
- WHILE P>0 DO
- BEGIN
- E := E2;
- PROD := 1;
- PMOD := P;
- WHILE E>0 DO
- BEGIN
- E1 := E;
- E := E DIV 2;
- IF (2*E) <> E1 THEN
- BEGIN
- PROD := PROD*PMOD;
- R := PROD DIV N;
- PROD := PROD-R*N;
- END;
- PMOD := PMOD*PMOD;
- R := PMOD DIV N;
- PMOD := PMOD-R*N
- END;
- WRITELN(' ', PROD);
- WRITELN('========================================');
- READLN(P)
- END
- END.
-
- (* Listing 8 RSA Encryption-Decryption Program *)
-