Sha256: 7a3c39a3e2899946c4fd89d2c43f4bd46bb8fa8c3cec7c901d074c6eb5c006d7

Contents?: true

Size: 857 Bytes

Versions: 114

Compression:

Stored size: 857 Bytes

Contents

package perfect

import "errors"

// 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 int64) (Classification, error) {
	if n <= 0 {
		return "", ErrOnlyPositive
	}
	var sum int64
	for i := int64(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

114 entries across 114 versions & 1 rubygems

Version Path
trackler-2.2.1.119 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.118 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.117 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.116 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.115 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.114 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.113 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.111 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.110 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.109 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.108 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.107 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.106 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.105 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.104 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.103 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.102 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.101 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.100 tracks/go/exercises/perfect-numbers/example.go
trackler-2.2.1.99 tracks/go/exercises/perfect-numbers/example.go