Strange unique prime triplets: Difference between revisions
Content added Content deleted
(Added Swift solution, minor edit to C++ code) |
(Added Forth solution) |
||
Line 392: | Line 392: | ||
Found 241,580 strange prime triplets with n, m, p < 1,000. |
Found 241,580 strange prime triplets with n, m, p < 1,000. |
||
</pre> |
|||
=={{header|Forth}}== |
|||
{{works with|Gforth}} |
|||
<lang forth>: prime? ( n -- ? ) here + c@ 0= ; |
|||
: notprime! ( n -- ) here + 1 swap c! ; |
|||
: prime_sieve ( n -- ) |
|||
here over erase |
|||
1 notprime! |
|||
dup 0 do i notprime! 2 +loop |
|||
3 |
|||
begin |
|||
2dup dup * > |
|||
while |
|||
dup prime? if |
|||
2dup dup * do |
|||
i notprime! |
|||
dup 2* +loop |
|||
then |
|||
2 + |
|||
repeat |
|||
2drop ; |
|||
: print_strange_unique_prime_triplets ( n -- ) |
|||
dup 8 < if drop exit then |
|||
dup 3 * prime_sieve |
|||
dup 4 - 3 do |
|||
i prime? if |
|||
dup 2 - i 2 + do |
|||
i prime? if |
|||
dup i 2 + do |
|||
i prime? if |
|||
i j k + + dup prime? if |
|||
k 2 .r ." + " j 2 .r ." + " i 2 .r ." = " 2 .r cr |
|||
else |
|||
drop |
|||
then |
|||
then |
|||
2 +loop |
|||
then |
|||
2 +loop |
|||
then |
|||
2 +loop drop ; |
|||
: count_strange_unique_prime_triplets ( n -- n ) |
|||
dup 8 < if drop 0 exit then |
|||
dup 3 * prime_sieve |
|||
0 swap |
|||
dup 4 - 3 do |
|||
i prime? if |
|||
dup 2 - i 2 + do |
|||
i prime? if |
|||
dup i 2 + do |
|||
i prime? if |
|||
i j k + + prime? if |
|||
swap 1+ swap |
|||
then |
|||
then |
|||
2 +loop |
|||
then |
|||
2 +loop |
|||
then |
|||
2 +loop drop ; |
|||
." Strange unique prime triplets < 30:" cr |
|||
30 print_strange_unique_prime_triplets |
|||
." Count of strange unique prime triplets < 1000: " |
|||
1000 count_strange_unique_prime_triplets . cr |
|||
bye</lang> |
|||
{{out}} |
|||
<pre> |
|||
Strange unique prime triplets < 30: |
|||
3 + 5 + 11 = 19 |
|||
3 + 5 + 23 = 31 |
|||
3 + 5 + 29 = 37 |
|||
3 + 7 + 13 = 23 |
|||
3 + 7 + 19 = 29 |
|||
3 + 11 + 17 = 31 |
|||
3 + 11 + 23 = 37 |
|||
3 + 11 + 29 = 43 |
|||
3 + 17 + 23 = 43 |
|||
5 + 7 + 11 = 23 |
|||
5 + 7 + 17 = 29 |
|||
5 + 7 + 19 = 31 |
|||
5 + 7 + 29 = 41 |
|||
5 + 11 + 13 = 29 |
|||
5 + 13 + 19 = 37 |
|||
5 + 13 + 23 = 41 |
|||
5 + 13 + 29 = 47 |
|||
5 + 17 + 19 = 41 |
|||
5 + 19 + 23 = 47 |
|||
5 + 19 + 29 = 53 |
|||
7 + 11 + 13 = 31 |
|||
7 + 11 + 19 = 37 |
|||
7 + 11 + 23 = 41 |
|||
7 + 11 + 29 = 47 |
|||
7 + 13 + 17 = 37 |
|||
7 + 13 + 23 = 43 |
|||
7 + 17 + 19 = 43 |
|||
7 + 17 + 23 = 47 |
|||
7 + 17 + 29 = 53 |
|||
7 + 23 + 29 = 59 |
|||
11 + 13 + 17 = 41 |
|||
11 + 13 + 19 = 43 |
|||
11 + 13 + 23 = 47 |
|||
11 + 13 + 29 = 53 |
|||
11 + 17 + 19 = 47 |
|||
11 + 19 + 23 = 53 |
|||
11 + 19 + 29 = 59 |
|||
13 + 17 + 23 = 53 |
|||
13 + 17 + 29 = 59 |
|||
13 + 19 + 29 = 61 |
|||
17 + 19 + 23 = 59 |
|||
19 + 23 + 29 = 71 |
|||
Count of strange unique prime triplets < 1000: 241580 |
|||
</pre> |
</pre> |
||