Chowla numbers: Difference between revisions
Content added Content deleted
m (→More Cowbell: deleted unused fragment of performance timing code) |
(Add Factor example) |
||
Line 294: | Line 294: | ||
33,550,336 is a number that is perfect |
33,550,336 is a number that is perfect |
||
There are 5 perfect numbers <= 35,000,000</pre> |
There are 5 perfect numbers <= 35,000,000</pre> |
||
=={{header|Factor}}== |
|||
<lang factor>USING: formatting fry grouping.extras io kernel math |
|||
math.primes.factors math.ranges math.statistics sequences |
|||
tools.memory.private ; |
|||
IN: rosetta-code.chowla-numbers |
|||
: chowla ( n -- m ) |
|||
dup 1 = [ 1 - ] [ [ divisors sum ] [ - 1 - ] bi ] if ; |
|||
: show-chowla ( n -- ) |
|||
[1,b] [ dup chowla "chowla(%02d) = %d\n" printf ] each ; |
|||
: count-primes ( seq -- ) |
|||
dup 0 prefix [ [ 1 + ] dip 2 <range> ] 2clump-map |
|||
[ [ chowla zero? ] count ] map cum-sum |
|||
[ [ commas ] bi@ "Primes up to %s: %s\n" printf ] 2each ; |
|||
: show-perfect ( n -- ) |
|||
[ 2 3 ] dip '[ 2dup * dup _ > ] [ |
|||
dup [ chowla ] [ 1 - = ] bi |
|||
[ commas "%s is perfect\n" printf ] [ drop ] if |
|||
[ nip 1 + ] [ nip dupd + ] 2bi |
|||
] until 3drop ; |
|||
: chowla-demo ( -- ) |
|||
37 show-chowla nl { 100 1000 10000 100000 1000000 10000000 } |
|||
count-primes nl 35e7 show-perfect ; |
|||
MAIN: chowla-demo</lang> |
|||
{{out}} |
|||
<pre> |
|||
chowla(01) = 0 |
|||
chowla(02) = 0 |
|||
chowla(03) = 0 |
|||
chowla(04) = 2 |
|||
chowla(05) = 0 |
|||
chowla(06) = 5 |
|||
chowla(07) = 0 |
|||
chowla(08) = 6 |
|||
chowla(09) = 3 |
|||
chowla(10) = 7 |
|||
chowla(11) = 0 |
|||
chowla(12) = 15 |
|||
chowla(13) = 0 |
|||
chowla(14) = 9 |
|||
chowla(15) = 8 |
|||
chowla(16) = 14 |
|||
chowla(17) = 0 |
|||
chowla(18) = 20 |
|||
chowla(19) = 0 |
|||
chowla(20) = 21 |
|||
chowla(21) = 10 |
|||
chowla(22) = 13 |
|||
chowla(23) = 0 |
|||
chowla(24) = 35 |
|||
chowla(25) = 5 |
|||
chowla(26) = 15 |
|||
chowla(27) = 12 |
|||
chowla(28) = 27 |
|||
chowla(29) = 0 |
|||
chowla(30) = 41 |
|||
chowla(31) = 0 |
|||
chowla(32) = 30 |
|||
chowla(33) = 14 |
|||
chowla(34) = 19 |
|||
chowla(35) = 12 |
|||
chowla(36) = 54 |
|||
chowla(37) = 0 |
|||
Primes up to 100: 25 |
|||
Primes up to 1,000: 168 |
|||
Primes up to 10,000: 1,229 |
|||
Primes up to 100,000: 9,592 |
|||
Primes up to 1,000,000: 78,498 |
|||
Primes up to 10,000,000: 664,579 |
|||
6 is perfect |
|||
28 is perfect |
|||
496 is perfect |
|||
8,128 is perfect |
|||
33,550,336 is perfect |
|||
</pre> |
|||
=={{header|Go}}== |
=={{header|Go}}== |