Chowla numbers: Difference between revisions

no edit summary
(→‎{{header|Picat}}: Adding Picat)
No edit summary
Line 5,035:
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>
 
=={{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}}==
338

edits