Sha256: 970ba22b0f7473caa969953cc6d3c513b1d3d97c0e313699fcc30492a0265865

Contents?: true

Size: 883 Bytes

Versions: 252

Compression:

Stored size: 883 Bytes

Contents

package perfect

import "errors"

const testVersion = 1

// Classification is the category devised by Greek Mathematician Nicomachus
type Classification string

// Defined categories
const (
	ClassificationDeficient Classification = "deficient"
	ClassificationPerfect   Classification = "perfect"
	ClassificationAbundant  Classification = "abundant"
)

// Errors
var (
	ErrOnlyPositive = errors.New("Positive number is required")
)

// Classify finds the category of given natural number
func Classify(n uint64) (Classification, error) {
	if n == 0 {
		return "", ErrOnlyPositive
	}
	var sum uint64
	for i := uint64(1); i < n; i++ {
		if n%i == 0 {
			if sum = sum + i; sum > n {
				return ClassificationAbundant, nil
			}
		}
	}
	if sum == n {
		return ClassificationPerfect, nil
	} else if sum < n {
		return ClassificationDeficient, nil
	}
	return ClassificationAbundant, nil
}

Version data entries

252 entries across 252 versions & 1 rubygems

Version Path
trackler-2.0.8.34 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.33 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.32 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.31 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.30 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.29 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.28 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.27 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.26 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.24 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.23 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.22 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.21 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.20 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.19 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.18 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.17 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.16 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.15 tracks/go/exercises/perfect-numbers/example.go
trackler-2.0.8.14 tracks/go/exercises/perfect-numbers/example.go