Find adjacent primes which differ by a square integer: Difference between revisions
Content added Content deleted
(Added XPL0 example.) |
(Add Factor) |
||
Line 133: | Line 133: | ||
(997813, 997877) |
(997813, 997877) |
||
</pre> |
</pre> |
||
=={{header|Factor}}== |
|||
{{works with|Factor|0.99 2021-06-02}} |
|||
<lang factor>USING: formatting io kernel lists lists.lazy math math.functions |
|||
math.primes.lists sequences ; |
|||
: adj-primes ( -- list ) lprimes dup cdr lzip ; |
|||
: diff ( pair -- n ) first2 swap - ; |
|||
: adj-primes-diff ( -- list ) |
|||
adj-primes [ dup diff suffix ] lmap-lazy ; |
|||
: big-adj-primes-diff ( -- list ) |
|||
adj-primes-diff [ last 36 > ] lfilter ; |
|||
: square? ( n -- ? ) sqrt dup >integer number= ; |
|||
: big-sq-adj-primes-diff ( -- list ) |
|||
big-adj-primes-diff [ last square? ] lfilter ; |
|||
"Adjacent primes under a million whose difference is a square > 36:" print nl |
|||
"p1 p2 difference" print |
|||
"============================" print |
|||
big-sq-adj-primes-diff [ second 1,000,000 < ] lwhile |
|||
[ "%-6d %-6d %d\n" vprintf ] leach</lang> |
|||
{{out}} |
|||
<pre> |
|||
Adjacent primes under a million whose difference is a square > 36: |
|||
p1 p2 difference |
|||
============================ |
|||
89689 89753 64 |
|||
107377 107441 64 |
|||
288583 288647 64 |
|||
367957 368021 64 |
|||
381103 381167 64 |
|||
396733 396833 100 |
|||
400759 400823 64 |
|||
445363 445427 64 |
|||
623107 623171 64 |
|||
625699 625763 64 |
|||
637003 637067 64 |
|||
710713 710777 64 |
|||
725209 725273 64 |
|||
779413 779477 64 |
|||
801883 801947 64 |
|||
803749 803813 64 |
|||
821677 821741 64 |
|||
832519 832583 64 |
|||
838249 838349 100 |
|||
844777 844841 64 |
|||
883807 883871 64 |
|||
912103 912167 64 |
|||
919447 919511 64 |
|||
954763 954827 64 |
|||
981823 981887 64 |
|||
997813 997877 64 |
|||
</pre> |
|||
=={{header|Fermat}}== |
=={{header|Fermat}}== |
||
<lang fermat>Func Issqr( n ) = if (Sqrt(n))^2=n then 1 else 0 fi.; |
<lang fermat>Func Issqr( n ) = if (Sqrt(n))^2=n then 1 else 0 fi.; |