Update all new Tasks
This commit is contained in:
parent
00a190b0a6
commit
91df62d461
5697 changed files with 93386 additions and 804 deletions
|
|
@ -0,0 +1,55 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
// Only valid for n > 0 && base >= 2
|
||||
func mult(n uint64, base int) (mult uint64) {
|
||||
for mult = 1; mult > 0 && n > 0; n /= uint64(base) {
|
||||
mult *= n % uint64(base)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Only valid for n >= 0 && base >= 2
|
||||
func MultDigitalRoot(n uint64, base int) (mp, mdr int) {
|
||||
var m uint64
|
||||
for m = n; m >= uint64(base); mp++ {
|
||||
m = mult(m, base)
|
||||
}
|
||||
return mp, int(m)
|
||||
}
|
||||
|
||||
func main() {
|
||||
const base = 10
|
||||
const size = 5
|
||||
|
||||
const testFmt = "%20v %3v %3v\n"
|
||||
fmt.Printf(testFmt, "Number", "MDR", "MP")
|
||||
for _, n := range [...]uint64{
|
||||
123321, 7739, 893, 899998,
|
||||
18446743999999999999,
|
||||
// From http://mathworld.wolfram.com/MultiplicativePersistence.html
|
||||
3778888999, 277777788888899,
|
||||
} {
|
||||
mp, mdr := MultDigitalRoot(n, base)
|
||||
fmt.Printf(testFmt, n, mdr, mp)
|
||||
}
|
||||
fmt.Println()
|
||||
|
||||
var list [base][]uint64
|
||||
for i := range list {
|
||||
list[i] = make([]uint64, 0, size)
|
||||
}
|
||||
for cnt, n := size*base, uint64(0); cnt > 0; n++ {
|
||||
_, mdr := MultDigitalRoot(n, base)
|
||||
if len(list[mdr]) < size {
|
||||
list[mdr] = append(list[mdr], n)
|
||||
cnt--
|
||||
}
|
||||
}
|
||||
const tableFmt = "%3v: %v\n"
|
||||
fmt.Printf(tableFmt, "MDR", "First")
|
||||
for i, l := range list {
|
||||
fmt.Printf(tableFmt, i, l)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue