Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
77
Task/Chowla-numbers/Dyalect/chowla-numbers.dyalect
Normal file
77
Task/Chowla-numbers/Dyalect/chowla-numbers.dyalect
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
func chowla(n) {
|
||||
var sum = 0
|
||||
var i = 2
|
||||
var j = 0
|
||||
while i * i <= n {
|
||||
if n % i == 0 {
|
||||
j = n / i
|
||||
var app = if i == j {
|
||||
0
|
||||
} else {
|
||||
j
|
||||
}
|
||||
sum += i + app
|
||||
}
|
||||
i += 1
|
||||
}
|
||||
return sum
|
||||
}
|
||||
|
||||
func sieve(limit) {
|
||||
var c = Array.Empty(limit)
|
||||
var i = 3
|
||||
while i * 3 < limit {
|
||||
if !c[i] && (chowla(i) == 0) {
|
||||
var j = 3 * i
|
||||
while j < limit {
|
||||
c[j] = true
|
||||
j += 2 * i
|
||||
}
|
||||
}
|
||||
i += 2
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
for i in 1..37 {
|
||||
print("chowla(\(i)) = \(chowla(i))")
|
||||
}
|
||||
|
||||
var count = 1
|
||||
var limit = 10000000
|
||||
var power = 100
|
||||
var c = sieve(limit)
|
||||
|
||||
var i = 3
|
||||
while i < limit {
|
||||
if !c[i] {
|
||||
count += 1
|
||||
}
|
||||
if i == power - 1 {
|
||||
print("Count of primes up to \(power) = \(count)")
|
||||
power *= 10
|
||||
}
|
||||
i += 2
|
||||
}
|
||||
|
||||
count = 0
|
||||
limit = 35000000
|
||||
var k = 2
|
||||
var kk = 3
|
||||
var p
|
||||
i = 2
|
||||
|
||||
while true {
|
||||
p = k * kk
|
||||
if p > limit {
|
||||
break
|
||||
}
|
||||
if chowla(p) == p - 1 {
|
||||
print("\(p) is a number that is perfect")
|
||||
count += 1
|
||||
}
|
||||
k = kk + 1
|
||||
kk += k
|
||||
}
|
||||
|
||||
print("There are \(count) perfect numbers <= 35,000,000")
|
||||
Loading…
Add table
Add a link
Reference in a new issue