42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"math"
|
|
"rcu"
|
|
"sort"
|
|
)
|
|
|
|
func main() {
|
|
arithmetic := []int{1}
|
|
primes := []int{}
|
|
limit := int(1e6)
|
|
for n := 3; len(arithmetic) < limit; n++ {
|
|
divs := rcu.Divisors(n)
|
|
if len(divs) == 2 {
|
|
primes = append(primes, n)
|
|
arithmetic = append(arithmetic, n)
|
|
} else {
|
|
mean := float64(rcu.SumInts(divs)) / float64(len(divs))
|
|
if mean == math.Trunc(mean) {
|
|
arithmetic = append(arithmetic, n)
|
|
}
|
|
}
|
|
}
|
|
fmt.Println("The first 100 arithmetic numbers are:")
|
|
rcu.PrintTable(arithmetic[0:100], 10, 3, false)
|
|
|
|
for _, x := range []int{1e3, 1e4, 1e5, 1e6} {
|
|
last := arithmetic[x-1]
|
|
lastc := rcu.Commatize(last)
|
|
fmt.Printf("\nThe %sth arithmetic number is: %s\n", rcu.Commatize(x), lastc)
|
|
pcount := sort.SearchInts(primes, last) + 1
|
|
if !rcu.IsPrime(last) {
|
|
pcount--
|
|
}
|
|
comp := x - pcount - 1 // 1 is not composite
|
|
compc := rcu.Commatize(comp)
|
|
fmt.Printf("The count of such numbers <= %s which are composite is %s.\n", lastc, compc)
|
|
}
|
|
}
|