Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
54
Task/Additive-primes/Modula-2/additive-primes.mod2
Normal file
54
Task/Additive-primes/Modula-2/additive-primes.mod2
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
MODULE AdditivePrimes;
|
||||
FROM InOut IMPORT WriteString, WriteCard, WriteLn;
|
||||
|
||||
CONST
|
||||
Max = 500;
|
||||
|
||||
VAR
|
||||
N: CARDINAL;
|
||||
Count: CARDINAL;
|
||||
Prime: ARRAY [2..Max] OF BOOLEAN;
|
||||
|
||||
PROCEDURE DigitSum(n: CARDINAL): CARDINAL;
|
||||
BEGIN
|
||||
IF n < 10 THEN
|
||||
RETURN n;
|
||||
ELSE
|
||||
RETURN (n MOD 10) + DigitSum(n DIV 10);
|
||||
END;
|
||||
END DigitSum;
|
||||
|
||||
PROCEDURE Sieve;
|
||||
VAR i, j, max2: CARDINAL;
|
||||
BEGIN
|
||||
FOR i := 2 TO Max DO
|
||||
Prime[i] := TRUE;
|
||||
END;
|
||||
|
||||
FOR i := 2 TO Max DIV 2 DO
|
||||
IF Prime[i] THEN;
|
||||
j := i*2;
|
||||
WHILE j <= Max DO
|
||||
Prime[j] := FALSE;
|
||||
j := j + i;
|
||||
END;
|
||||
END;
|
||||
END;
|
||||
END Sieve;
|
||||
|
||||
BEGIN
|
||||
Count := 0;
|
||||
Sieve();
|
||||
FOR N := 2 TO Max DO
|
||||
IF Prime[N] AND Prime[DigitSum(N)] THEN
|
||||
WriteCard(N, 4);
|
||||
Count := Count + 1;
|
||||
IF Count MOD 10 = 0 THEN WriteLn(); END;
|
||||
END;
|
||||
END;
|
||||
WriteLn();
|
||||
WriteString('There are '); WriteCard(Count,0);
|
||||
WriteString(' additive primes less than '); WriteCard(Max,0);
|
||||
WriteString('.');
|
||||
WriteLn();
|
||||
END AdditivePrimes.
|
||||
Loading…
Add table
Add a link
Reference in a new issue