Chowla numbers: Difference between revisions
Content added Content deleted
(→{{header|Picat}}: Adding Picat) |
No edit summary |
||
Line 5,035: | Line 5,035: | ||
2,305,843,008,139,952,128 is a number that is perfect |
2,305,843,008,139,952,128 is a number that is perfect |
||
There are 8 perfect numbers <= 25,000,000,000,000,000,000</pre> |
There are 8 perfect numbers <= 25,000,000,000,000,000,000</pre> |
||
=={{header|Vlang}}== |
|||
{{trans|Go}} |
|||
<lang vlang>fn chowla(n int) int { |
|||
if n < 1 { |
|||
panic("argument must be a positive integer") |
|||
} |
|||
mut sum := 0 |
|||
for i := 2; i*i <= n; i++ { |
|||
if n%i == 0 { |
|||
j := n / i |
|||
if i == j { |
|||
sum += i |
|||
} else { |
|||
sum += i + j |
|||
} |
|||
} |
|||
} |
|||
return sum |
|||
} |
|||
fn sieve(limit int) []bool { |
|||
// True denotes composite, false denotes prime. |
|||
// Only interested in odd numbers >= 3 |
|||
mut c := []bool{len: limit} |
|||
for i := 3; i*3 < limit; i += 2 { |
|||
if !c[i] && chowla(i) == 0 { |
|||
for j := 3 * i; j < limit; j += 2 * i { |
|||
c[j] = true |
|||
} |
|||
} |
|||
} |
|||
return c |
|||
} |
|||
fn main() { |
|||
for i := 1; i <= 37; i++ { |
|||
println("chowla(${i:2}) = ${chowla(i)}") |
|||
} |
|||
println('') |
|||
mut count := 1 |
|||
mut limit := int(1e7) |
|||
c := sieve(limit) |
|||
mut power := 100 |
|||
for i := 3; i < limit; i += 2 { |
|||
if !c[i] { |
|||
count++ |
|||
} |
|||
if i == power-1 { |
|||
println("Count of primes up to ${power:-10} = $count") |
|||
power *= 10 |
|||
} |
|||
} |
|||
println('') |
|||
count = 0 |
|||
limit = 35000000 |
|||
for i := 2; ; i++ { |
|||
if i > limit { |
|||
break |
|||
} |
|||
if chowla(i) == i-1 { |
|||
println("$i is a perfect number") |
|||
count++ |
|||
} |
|||
} |
|||
println("There are $count perfect numbers <= 35,000,000") |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
chowla( 1) = 0 |
|||
chowla( 2) = 0 |
|||
chowla( 3) = 0 |
|||
chowla( 4) = 2 |
|||
chowla( 5) = 0 |
|||
chowla( 6) = 5 |
|||
chowla( 7) = 0 |
|||
chowla( 8) = 6 |
|||
chowla( 9) = 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 |
|||
Count of primes up to 100 = 25 |
|||
Count of primes up to 1,000 = 168 |
|||
Count of primes up to 10,000 = 1,229 |
|||
Count of primes up to 100,000 = 9,592 |
|||
Count of primes up to 1,000,000 = 78,498 |
|||
Count of primes up to 10,000,000 = 664,579 |
|||
6 is a perfect number |
|||
28 is a perfect number |
|||
496 is a perfect number |
|||
8128 is a perfect number |
|||
33550336 is a perfect number |
|||
There are 5 perfect numbers <= 35,000,000 |
|||
</pre> |
|||
=={{header|Wren}}== |
=={{header|Wren}}== |