Erdős-primes: Difference between revisions

Content added Content deleted
(Dialects of BASIC moved to the BASIC section.)
(→‎{{header|Tiny BASIC}}: Works with (Tom Pittman's) TinyBasic.)
Line 286: Line 286:
==={{header|Tiny BASIC}}===
==={{header|Tiny BASIC}}===
Can't manage the stretch goal because integers are limited to signed 16 bit.
Can't manage the stretch goal because integers are limited to signed 16 bit.
{{works with|TinyBasic}}
<syntaxhighlight lang="tinybasic"> LET P = 1
(Tom Pittman's) TinyBasic uses <code>;</code> instead of <code>,</code> for string concatenation in <code>PRINT</code>.
10 IF P > 2 THEN LET P = P + 2
<syntaxhighlight lang="basic">10 REM Erdős-primes
IF P < 3 THEN LET P = P + 1
LET Z = P
20 LET P = 1
30 IF P > 2 THEN LET P = P + 2
GOSUB 1000
IF A = 0 THEN GOTO 10
40 IF P < 3 THEN LET P = P + 1
LET K = 0
50 LET Z = P
60 GOSUB 1000
20 LET K = K + 1
GOSUB 2000
70 IF A = 0 THEN GOTO 30
LET Z = P - F
80 LET K = 0
90 LET K = K + 1
IF Z < 0 THEN GOTO 30
GOSUB 1000
100 GOSUB 2000
IF A = 1 THEN LET E = 0
110 LET Z = P - F
IF A = 1 THEN GOTO 10
120 IF Z < 0 THEN GOTO 170
130 GOSUB 1000
GOTO 20
30 LET C = C + 1
140 IF A = 1 THEN LET E = 0
IF P < 2500 THEN PRINT C," ",P
150 IF A = 1 THEN GOTO 30
160 GOTO 90
IF P > 2500 THEN END
GOTO 10
170 LET C = C + 1
180 IF P < 2500 THEN PRINT C, " ", P
190 IF P > 2500 THEN END
1000 REM primality of Z by trial division, result is in A
200 GOTO 30
LET Y = 1

LET A = 0
990 REM primality of Z by trial division, result is in A
IF Z = 2 THEN LET A = 1
1000 LET Y = 1
IF Z < 3 THEN RETURN
1010 LET Y = Y + 2
1010 LET A = 0
IF (Z/Y)*Y = Z THEN RETURN
1020 IF Z = 2 THEN LET A = 1
IF Y*Y < Z THEN GOTO 1010
1030 IF Z < 3 THEN RETURN
LET A = 1
1040 LET Y = Y + 2
RETURN
1050 IF (Z / Y) * Y = Z THEN RETURN
1060 IF Y * Y < Z THEN GOTO 1040
1070 LET A = 1
2000 REM factorial of K, result is in F
1080 RETURN
LET A = 1

LET F = 1
1990 REM factorial of K, result is in F
2010 LET F = F*A
2000 LET A = 1
IF A=K THEN RETURN
LET A = A + 1
2010 LET F = 1
2020 LET F = F * A
GOTO 2010</syntaxhighlight>
2030 IF A = K THEN RETURN
2040 LET A = A + 1
2050 GOTO 2020

3000 REM TODO: Simplify. K! can be calculated from (K - 1)!.</syntaxhighlight>
{{out}}
{{out}}
<pre>1 2
<pre>1 2