Rhonda numbers: Difference between revisions

Content added Content deleted
(Added Algol 68)
(Created Nim solution.)
Line 1,593: Line 1,593:
base 35:{8232,9476,9633,18634,30954,41905,52215,52440,56889,61992,62146,66339,98260,102180,103305}
base 35:{8232,9476,9633,18634,30954,41905,52215,52440,56889,61992,62146,66339,98260,102180,103305}
base 36:{1000,4800,5670,8190,10998,12412,13300,15750,16821,23016,51612,52734,67744,70929,75030}</pre>
base 36:{1000,4800,5670,8190,10998,12412,13300,15750,16821,23016,51612,52734,67744,70929,75030}</pre>

=={{header|Nim}}==
<syntaxhighlight lang="Nim">import std/[sequtils, strformat, strutils]

type Base = 2..36

template isOdd(n: int): bool = (n and 1) == 0

func isPrime(n: Natural): bool =
## Return true if "n" is prime.
if n < 2: return false
if n.isOdd: return n == 2
if n mod 3 == 0: return n == 3
var d = 5
while d * d <= n:
if n mod d == 0: return false
inc d, 2
return true

func digitProduct(n: Positive; base: Base): int =
## Return the product of digits of "n" in given base.
var n = n.Natural
result = 1
while n != 0:
result *= n mod base
n = n div base

func primeFactorSum(n: Positive): int =
## Return the sum of prime factors of "n".
var n = n.Natural
while n.isOdd:
inc result, 2
n = n shr 1
var d = 3
while d * d <= n:
while n mod d == 0:
inc result, d
n = n div d
inc d, 2
if n > 1: inc result, n

func isRhondaNumber(n: Positive; base: Base): bool =
## Return true if "n" is a Rhonda number to given base.
n.digitProduct(base) == base * n.primeFactorSum

const Digits = toSeq('0'..'9') & toSeq('a'..'z')

func toBase(n: Positive; base: Base): string =
## Return the string representation of "n" in given base.
var n = n.Natural
while true:
result.add Digits[n mod base]
n = n div base
if n == 0: break
# Reverse the digits.
for i in 1..(result.len shr 1):
swap result[i - 1], result[^i]


const N = 10

for base in 2..36:
if base.isPrime: continue
echo &"First {N} Rhonda numbers to base {base}:"
var rhondaList: seq[Positive]
var n = 1
var count = 0
while count < N:
if n.isRhondaNumber(base):
rhondaList.add n
inc count
inc n
echo "In base 10: ", rhondaList.join(" ")
echo &"In base {base}: ", rhondaList.mapIt(it.toBase(base)).join(" ")
echo()
</syntaxhighlight>

{{out}}
<pre>First 10 Rhonda numbers to base 4:
In base 10: 10206 11935 12150 16031 45030 94185 113022 114415 191149 244713
In base 4: 2133132 2322133 2331312 3322133 22333212 112333221 123211332 123323233 232222231 323233221

First 10 Rhonda numbers to base 6:
In base 10: 855 1029 3813 5577 7040 7304 15104 19136 35350 36992
In base 6: 3543 4433 25353 41453 52332 53452 153532 224332 431354 443132

First 10 Rhonda numbers to base 8:
In base 10: 1836 6318 6622 10530 14500 14739 17655 18550 25398 25956
In base 8: 3454 14256 14736 24442 34244 34623 42367 44166 61466 62544

First 10 Rhonda numbers to base 9:
In base 10: 15540 21054 25331 44360 44660 44733 47652 50560 54944 76857
In base 9: 23276 31783 37665 66758 67232 67323 72326 76317 83328 126376

First 10 Rhonda numbers to base 10:
In base 10: 1568 2835 4752 5265 5439 5664 5824 5832 8526 12985
In base 10: 1568 2835 4752 5265 5439 5664 5824 5832 8526 12985

First 10 Rhonda numbers to base 12:
In base 10: 560 800 3993 4425 4602 4888 7315 8296 9315 11849
In base 12: 3a8 568 2389 2689 27b6 29b4 4297 4974 5483 6a35

First 10 Rhonda numbers to base 14:
In base 10: 11475 18655 20565 29631 31725 45387 58404 58667 59950 63945
In base 14: 4279 6b27 76cd ab27 b7c1 1277d 173da 17547 17bc2 19437

First 10 Rhonda numbers to base 15:
In base 10: 2392 2472 11468 15873 17424 18126 19152 20079 24388 30758
In base 15: a97 aec 35e8 4a83 5269 5586 5a1c 5e39 735d 91a8

First 10 Rhonda numbers to base 16:
In base 10: 1000 1134 6776 15912 19624 20043 20355 23946 26296 29070
In base 16: 3e8 46e 1a78 3e28 4ca8 4e4b 4f83 5d8a 66b8 718e

First 10 Rhonda numbers to base 18:
In base 10: 1470 3000 8918 17025 19402 20650 21120 22156 26522 36549
In base 18: 49c 94c 1998 2g9f 35fg 39d4 3b36 3e6g 49f8 64e9

First 10 Rhonda numbers to base 20:
In base 10: 1815 11050 15295 21165 22165 30702 34510 34645 42292 44165
In base 20: 4af 17ca 1i4f 2ci5 2f85 3gf2 465a 46c5 55ec 5a85

First 10 Rhonda numbers to base 21:
In base 10: 1632 5390 8512 12992 15678 25038 29412 34017 39552 48895
In base 21: 3ef c4e j67 189e 1ebc 2eg6 33ec 3e2i 45e9 55i7

First 10 Rhonda numbers to base 22:
In base 10: 2695 4128 7865 28800 31710 37030 71875 74306 117760 117895
In base 22: 5cb 8be g5b 2fb2 2lb8 3ab4 6gb1 6lbc b16g b1cj

First 10 Rhonda numbers to base 24:
In base 10: 2080 2709 3976 5628 5656 7144 8296 9030 10094 17612
In base 24: 3eg 4gl 6lg 9ic 9jg c9g e9g fg6 hce 16dk

First 10 Rhonda numbers to base 25:
In base 10: 6764 9633 13260 22022 53382 57640 66015 69006 97014 140130
In base 25: ake fa8 l5a 1a5m 3aa7 3h5f 45ff 4aa6 655e 8o55

First 10 Rhonda numbers to base 26:
In base 10: 7788 9322 9374 11160 22165 27885 34905 44785 47385 49257
In base 26: bde dke dme gd6 16kd 1f6d 1pgd 2e6d 2i2d 2kmd

First 10 Rhonda numbers to base 27:
In base 10: 4797 11844 12078 13200 14841 17750 24320 26883 27477 46455
In base 27: 6fi g6i gf9 i2o k9i o9b 169k 19ni 1aii 29jf

First 10 Rhonda numbers to base 28:
In base 10: 3094 5808 5832 7462 11160 13671 27270 28194 28638 39375
In base 28: 3qe 7bc 7c8 9ee e6g hc7 16lq 17qq 18em 1m67

First 10 Rhonda numbers to base 30:
In base 10: 3024 3168 5115 5346 5950 6762 7750 7956 8470 9476
In base 30: 3ao 3fi 5kf 5s6 6ia 7fc 8ia 8p6 9ca afq

First 10 Rhonda numbers to base 32:
In base 10: 1944 3600 13520 15876 16732 16849 25410 25752 28951 47472
In base 32: 1so 3gg d6g fg4 gas geh oq2 p4o s8n 1ebg

First 10 Rhonda numbers to base 33:
In base 10: 756 7040 7568 13826 24930 30613 59345 63555 64372 131427
In base 33: mu 6fb 6vb cmw mtf s3m 1lgb 1pbu 1q3m 3lml

First 10 Rhonda numbers to base 34:
In base 10: 5661 14161 15620 16473 22185 37145 125579 134692 135405 138472
In base 34: 4uh c8h dhe e8h j6h w4h 36lh 3ehi 3f4h 3hqo

First 10 Rhonda numbers to base 35:
In base 10: 8232 9476 9633 18634 30954 41905 52215 52440 56889 61992
In base 35: 6p7 7pq 7u8 f7e p9e y7a 17lu 17sa 1bfe 1fl7

First 10 Rhonda numbers to base 36:
In base 10: 1000 4800 5670 8190 10998 12412 13300 15750 16821 23016
In base 36: rs 3pc 4di 6bi 8hi 9ks a9g c5i cz9 hrc
</pre>


=={{header|Perl}}==
=={{header|Perl}}==