Find prime numbers of the form n*n*n+2: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add MAD) |
Not a robot (talk | contribs) (Add COBOL) |
||
Line 365: | Line 365: | ||
n = 173 => n^3 + 2 = 5177719 |
n = 173 => n^3 + 2 = 5177719 |
||
n = 189 => n^3 + 2 = 6751271</pre> |
n = 189 => n^3 + 2 = 6751271</pre> |
||
=={{header|COBOL}}== |
|||
<lang cobol> IDENTIFICATION DIVISION. |
|||
PROGRAM-ID. N3-PLUS-2-PRIMES. |
|||
DATA DIVISION. |
|||
WORKING-STORAGE SECTION. |
|||
01 VARIABLES. |
|||
03 N PIC 9(3). |
|||
03 N3PLUS2 PIC 9(7). |
|||
03 DIVISOR PIC 9(4). |
|||
03 DIV-SQ PIC 9(8). |
|||
03 DIV-CHECK PIC 9(4)V9(4). |
|||
03 FILLER REDEFINES DIV-CHECK. |
|||
05 FILLER PIC 9(4). |
|||
05 FILLER PIC 9(4). |
|||
88 DIVISIBLE VALUE ZERO. |
|||
03 FILLER REDEFINES N3PLUS2. |
|||
05 FILLER PIC 9(6). |
|||
05 FILLER PIC 9. |
|||
88 EVEN VALUE 0, 2, 4, 6, 8. |
|||
03 PRIME-FLAG PIC X. |
|||
88 PRIME VALUE '*'. |
|||
01 FORMAT. |
|||
03 FILLER PIC X(4) VALUE "N = ". |
|||
03 N-OUT PIC ZZ9. |
|||
03 FILLER PIC X(17) VALUE " => N ** 3 + 2 = ". |
|||
03 N3PLUS2-OUT PIC Z(6)9. |
|||
PROCEDURE DIVISION. |
|||
BEGIN. |
|||
PERFORM TRY-N VARYING N FROM 1 BY 1 |
|||
UNTIL N IS GREATER THAN 200. |
|||
STOP RUN. |
|||
TRY-N. |
|||
COMPUTE N3PLUS2 = N ** 3 + 2. |
|||
PERFORM CHECK-PRIME. |
|||
IF PRIME, |
|||
MOVE N TO N-OUT, |
|||
MOVE N3PLUS2 TO N3PLUS2-OUT, |
|||
DISPLAY FORMAT. |
|||
CHECK-PRIME SECTION. |
|||
BEGIN. |
|||
MOVE SPACE TO PRIME-FLAG. |
|||
IF N3PLUS2 IS LESS THAN 5, GO TO TRIVIAL. |
|||
IF EVEN, GO TO CHECK-PRIME-DONE. |
|||
DIVIDE N3PLUS2 BY 3 GIVING DIV-CHECK. |
|||
IF DIVISIBLE, GO TO CHECK-PRIME-DONE. |
|||
MOVE ZERO TO DIV-SQ. |
|||
MOVE 5 TO DIVISOR. |
|||
MOVE '*' TO PRIME-FLAG. |
|||
PERFORM CHECK-DIVISOR |
|||
UNTIL NOT PRIME OR DIV-SQ IS GREATER THAN N3PLUS2. |
|||
GO TO CHECK-PRIME-DONE. |
|||
CHECK-DIVISOR. |
|||
MULTIPLY DIVISOR BY DIVISOR GIVING DIV-SQ. |
|||
DIVIDE N3PLUS2 BY DIVISOR GIVING DIV-CHECK. |
|||
IF DIVISIBLE, MOVE SPACE TO PRIME-FLAG. |
|||
ADD 2 TO DIVISOR. |
|||
DIVIDE N3PLUS2 BY DIVISOR GIVING DIV-CHECK. |
|||
IF DIVISIBLE, MOVE SPACE TO PRIME-FLAG. |
|||
ADD 4 TO DIVISOR. |
|||
TRIVIAL. |
|||
IF N3PLUS2 IS EQUAL TO 2 OR EQUAL TO 3, |
|||
MOVE '*' TO PRIME-FLAG. |
|||
CHECK-PRIME-DONE. |
|||
EXIT.</lang> |
|||
{{out}} |
|||
<pre>N = 1 => N ** 3 + 2 = 3 |
|||
N = 3 => N ** 3 + 2 = 29 |
|||
N = 5 => N ** 3 + 2 = 127 |
|||
N = 29 => N ** 3 + 2 = 24391 |
|||
N = 45 => N ** 3 + 2 = 91127 |
|||
N = 63 => N ** 3 + 2 = 250049 |
|||
N = 65 => N ** 3 + 2 = 274627 |
|||
N = 69 => N ** 3 + 2 = 328511 |
|||
N = 71 => N ** 3 + 2 = 357913 |
|||
N = 83 => N ** 3 + 2 = 571789 |
|||
N = 105 => N ** 3 + 2 = 1157627 |
|||
N = 113 => N ** 3 + 2 = 1442899 |
|||
N = 123 => N ** 3 + 2 = 1860869 |
|||
N = 129 => N ** 3 + 2 = 2146691 |
|||
N = 143 => N ** 3 + 2 = 2924209 |
|||
N = 153 => N ** 3 + 2 = 3581579 |
|||
N = 171 => N ** 3 + 2 = 5000213 |
|||
N = 173 => N ** 3 + 2 = 5177719 |
|||
N = 189 => N ** 3 + 2 = 6751271</pre> |
|||
=={{header|Cowgol}}== |
=={{header|Cowgol}}== |