Curzon numbers: Difference between revisions
Content added Content deleted
(→{{header|Vlang}}: Rename "Vlang" in "V (Vlang)") |
IbzanHyena (talk | contribs) (Add a J solution) |
||
Line 553: | Line 553: | ||
one thousandth at base 10: 46845 |
one thousandth at base 10: 46845 |
||
-------------------------------------------------- |
-------------------------------------------------- |
||
</pre> |
|||
=={{header|J}}== |
|||
A simple test for whether a number is a (generalized) Curzon number is: |
|||
<syntaxhighlight lang="j">isCurzon =: 2&$: : (0 = * |&:>: ^)</syntaxhighlight> |
|||
Here, the monadic case uses 2 as the left argument for the dyadic case, which handles generalized Curzon numbers. |
|||
However, this is inefficient for large numbers, due to it explicitly exponentiating. |
|||
Since we test the remainder immediately after, we can use a special combination instead, |
|||
<syntaxhighlight lang="j">modpow =: {{ m&|@^ }} |
|||
isCurzon =: {{ |
|||
z =: >: x * y |
|||
z = >: x z modpow y |
|||
}}</syntaxhighlight> |
|||
This avoids performing the large exponentiation, which is significantly faster. |
|||
For generating the results: |
|||
<syntaxhighlight lang="j">generateCurzons =: {{ |
|||
found =. i. 0x |
|||
current =. 0x |
|||
while. 1000 > # found do. |
|||
if. y isCurzon current do. found =. found , current end. |
|||
current =. >: current |
|||
end. |
|||
y ; (5 10 $ found) ; {: found |
|||
}} |
|||
('Base';'First 50';'1000th') , generateCurzons"0 +:>:i.5</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
+----+-------------------------------------------------+------+ |
|||
|Base|First 50 |1000th| |
|||
+----+-------------------------------------------------+------+ |
|||
|2 | 1 2 5 6 9 14 18 21 26 29 |8646 | |
|||
| | 30 33 41 50 53 54 65 69 74 78 | | |
|||
| | 81 86 89 90 98 105 113 114 125 134 | | |
|||
| |138 141 146 153 158 165 173 174 186 189 | | |
|||
| |194 198 209 210 221 230 233 245 249 254 | | |
|||
+----+-------------------------------------------------+------+ |
|||
|4 | 1 3 7 9 13 15 25 27 37 39 |9375 | |
|||
| | 43 45 49 57 67 69 73 79 87 93 | | |
|||
| | 97 99 105 115 127 135 139 153 163 165 | | |
|||
| |169 175 177 183 189 193 199 205 207 213 | | |
|||
| |219 235 249 253 255 265 267 273 277 279 | | |
|||
+----+-------------------------------------------------+------+ |
|||
|6 | 1 6 30 58 70 73 90 101 105 121 |20717 | |
|||
| |125 146 153 166 170 181 182 185 210 233 | | |
|||
| |241 242 266 282 290 322 373 381 385 390 | | |
|||
| |397 441 445 446 450 453 530 557 562 585 | | |
|||
| |593 601 602 605 606 621 646 653 670 685 | | |
|||
+----+-------------------------------------------------+------+ |
|||
|8 | 1 14 35 44 72 74 77 129 131 137 |22176 | |
|||
| |144 149 150 185 200 219 236 266 284 285 | | |
|||
| |299 309 336 357 381 386 390 392 402 414 | | |
|||
| |420 441 455 459 470 479 500 519 527 536 | | |
|||
| |557 582 600 602 617 639 654 674 696 735 | | |
|||
+----+-------------------------------------------------+------+ |
|||
|10 | 1 9 10 25 106 145 190 193 238 253|46845 | |
|||
| | 306 318 349 385 402 462 486 526 610 649| | |
|||
| | 658 678 733 762 810 990 994 1033 1077 1125| | |
|||
| |1126 1141 1149 1230 1405 1422 1441 1485 1509 1510| | |
|||
| |1513 1606 1614 1630 1665 1681 1690 1702 1785 1837| | |
|||
+----+-------------------------------------------------+------+ |
|||
</pre> |
</pre> |
||