Brazilian numbers: Difference between revisions
Content added Content deleted
(Added solution for Action!) |
|||
Line 104: | Line 104: | ||
7, 13, 31, 43, 73, 127, 157, 211, 241, 307, 421, 463, 601, 757, 1093, 1123, 1483, 1723, 2551, 2801 |
7, 13, 31, 43, 73, 127, 157, 211, 241, 307, 421, 463, 601, 757, 1093, 1123, 1483, 1723, 2551, 2801 |
||
</pre> |
|||
=={{header|Action!}}== |
|||
Calculations on a real Atari 8-bit computer take quite long time. It is recommended to use an emulator capable with increasing speed of Atari CPU. |
|||
{{libheader|Action! Sieve of Eratosthenes}} |
|||
<lang Action!>INCLUDE "H6:SIEVE.ACT" |
|||
BYTE FUNC SameDigits(INT x,b) |
|||
INT d |
|||
d=x MOD b |
|||
x==/b |
|||
WHILE x>0 |
|||
DO |
|||
IF x MOD b#d THEN |
|||
RETURN (0) |
|||
FI |
|||
x==/b |
|||
OD |
|||
RETURN (1) |
|||
BYTE FUNC IsBrazilian(INT x) |
|||
INT b |
|||
IF x<7 THEN RETURN (0) FI |
|||
IF x MOD 2=0 THEN RETURN (1) FI |
|||
FOR b=2 TO x-2 |
|||
DO |
|||
IF SameDigits(x,b) THEN |
|||
RETURN (1) |
|||
FI |
|||
OD |
|||
RETURN (0) |
|||
PROC Main() |
|||
DEFINE COUNT="20" |
|||
DEFINE MAXNUM="3000" |
|||
BYTE ARRAY primes(MAXNUM+1) |
|||
INT i,x,c |
|||
CHAR ARRAY s |
|||
Put(125) PutE() ;clear the screen |
|||
Sieve(primes,MAXNUM+1) |
|||
FOR i=0 TO 2 |
|||
DO |
|||
IF i=0 THEN |
|||
s=" " |
|||
ELSEIF i=1 THEN |
|||
s=" odd " |
|||
ELSE |
|||
s=" prime " |
|||
FI |
|||
PrintF("First %I%SBrazilian numbers:%E",COUNT,s) |
|||
c=0 x=7 |
|||
DO |
|||
IF IsBrazilian(x) THEN |
|||
PrintI(x) Put(32) |
|||
c==+1 |
|||
IF c=COUNT THEN EXIT FI |
|||
FI |
|||
IF i=0 THEN |
|||
x==+1 |
|||
ELSEIF i=1 THEN |
|||
x==+2 |
|||
ELSE |
|||
DO |
|||
x==+2 |
|||
UNTIL primes(x) |
|||
OD |
|||
FI |
|||
OD |
|||
PutE() PutE() |
|||
OD |
|||
RETURN</lang> |
|||
{{out}} |
|||
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Brazilian_numbers.png Screenshot from Atari 8-bit computer] |
|||
<pre> |
|||
First 20 Brazilian numbers: |
|||
7 8 10 12 13 14 15 16 18 20 21 22 24 26 27 28 30 31 32 33 |
|||
First 20 odd Brazilian numbers: |
|||
7 13 15 21 27 31 33 35 39 43 45 51 55 57 63 65 69 73 75 77 |
|||
First 20 prime Brazilian numbers: |
|||
7 13 31 43 73 127 157 211 241 307 421 463 601 757 1093 1123 1483 1723 2551 2801 |
|||
</pre> |
</pre> |
||