package factors // TotativeRatio calculates the fraction of numbers less than n that // are totatives of n (share no factors with n) func TotativeRatio(n uint) float64 { if n == 0 { panic("0 has no totative ratio!") } primeFactorization := PrimeFactorize(n) totativeRatio := 1.0 for p := range primeFactorization.exponents { totativeRatio *= float64(p - 1) / float64(p) } return totativeRatio }