Descending primes: Difference between revisions
Content added Content deleted
(→{{header|Ring}}: Rewrote code, removed warning) |
|||
Line 614: | Line 614: | ||
=={{header|Ring}}== |
=={{header|Ring}}== |
||
<lang ring>show("decending primes", sort(cending_primes(seq(9, 1)))) |
|||
{{incorrect|Ring| <br> Many of the numbers shown do not have strictly descending digits, e.g. all the ones starting with 2 (except 2 itself). <br> Largest is much larger than 1000. }} |
|||
<lang ring> |
|||
load "stdlibcore.ring" |
|||
func show(title, itm) |
|||
limit = 1000 |
|||
l = len(itm); ? "" + l + " " + title + ":" |
|||
row = 0 |
|||
⚫ | |||
see fmt(itm[i], 9) |
|||
⚫ | |||
next : ? "" |
|||
func seq(b, e) |
|||
⚫ | |||
res = []; d = e - b |
|||
s = d / fabs(d) |
|||
for i = b to e step s add(res, i) next |
|||
if isprime(n) = 1 |
|||
return res |
|||
for m = 1 to len(strn)-1 |
|||
if number(substr(strn,m)) < number(substr(strn,m+1)) |
|||
func ispr(n) |
|||
⚫ | |||
if n < 2 return 0 ok |
|||
if n & 1 = 0 return n = 2 ok |
|||
if n % 3 = 0 return n = 3 ok |
|||
l = sqrt(n) |
|||
for f = 5 to l |
|||
if n % f = 0 or n % (f + 2) = 0 return false ok |
|||
⚫ | |||
next : return 1 |
|||
if row % 10 = 0 |
|||
see nl |
|||
func cending_primes(digs) |
|||
ok |
|||
cand = [0] |
|||
pr = [] |
|||
⚫ | |||
for i in digs |
|||
</lang> |
|||
lcand = cand |
|||
Output: |
|||
for j in lcand |
|||
<br> |
|||
v = j * 10 + i |
|||
if ispr(v) add(pr, v) ok |
|||
add(cand, v) |
|||
73 79 83 89 97 101 103 107 109 113 |
|||
⚫ | |||
127 131 137 139 149 151 157 163 167 173 |
|||
⚫ | |||
179 181 191 193 197 199 211 223 227 229 |
|||
return pr |
|||
233 239 241 251 257 263 269 271 277 281 |
|||
283 293 307 311 313 317 331 337 347 349 |
|||
func fmt(x, l) |
|||
353 359 367 373 379 383 389 397 401 409 |
|||
res = " " + x |
|||
return right(res, l)</lang> |
|||
467 479 487 491 499 503 509 521 523 541 |
|||
{{out}} |
|||
547 557 563 569 571 577 587 593 599 601 |
|||
<pre>87 decending primes: |
|||
607 613 617 619 631 641 643 647 653 659 |
|||
2 3 5 7 31 |
|||
661 673 677 683 691 701 709 719 727 733 |
|||
41 43 53 61 71 |
|||
739 743 751 757 761 769 773 787 797 809 |
|||
73 83 97 421 431 |
|||
811 821 823 827 829 839 853 857 859 863 |
|||
521 541 631 641 643 |
|||
877 881 883 887 907 911 919 929 937 941 |
|||
653 743 751 761 821 |
|||
947 953 967 971 977 983 991 997 |
|||
853 863 941 953 971 |
|||
983 5431 6421 6521 7321 |
|||
7541 7621 7643 8431 8521 |
|||
8543 8641 8731 8741 8753 |
|||
8761 9421 9431 9521 9631 |
|||
9643 9721 9743 9851 9871 |
|||
75431 76421 76541 76543 86531 |
|||
87421 87541 87631 87641 87643 |
|||
94321 96431 97651 98321 98543 |
|||
98621 98641 98731 764321 865321 |
|||
876431 975421 986543 987541 987631 |
|||
8764321 8765321 9754321 9875321 97654321 |
|||
98764321 98765431</pre> |
|||
=={{header|Ruby}}== |
=={{header|Ruby}}== |