From c50ece109cdb29ab5d3fa7444040b546da7e360c Mon Sep 17 00:00:00 2001 From: Adrien Hopkins Date: Mon, 9 Oct 2023 16:15:48 -0500 Subject: factors: Give all exported members proper godoc --- factors/mtc.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'factors/mtc.go') diff --git a/factors/mtc.go b/factors/mtc.go index 024391e..4d40396 100644 --- a/factors/mtc.go +++ b/factors/mtc.go @@ -3,10 +3,21 @@ package factors // MTC returns the multiplication table complexity of a radix n. // This is an estimate of how difficult it is to learn a radix's // multiplication table. -func MTC(n uint32) uint64 { +// +// The MTC is a sum of each digit's row complexity, +// which is the length of the pattern of the product's last digit +// (equal to digit / gcd(digit, radix)). +// Digits 1 and radix - 1 are excluded because they have simpler patterns +// than the other digits. +// +// uint32 is used as the input type and uint64 as the output to prevent +// integer overflow (and because the MTC algorithm is slow). +// +// The MTC of 0 and 1 are both zero. +func MTC(radix uint32) uint64 { mtc := uint64(0) - for i := uint32(2); i <= n-2; i++ { - mtc += uint64(n / gcd(i, n)) + for digit := uint32(2); digit <= radix-2; digit++ { + mtc += uint64(radix / gcd(digit, radix)) } return mtc } -- cgit v1.2.3