Go Program to find the Perfect Number

A number can be a Perfect number if the sum of positive divisors excluding the number itself equals a given number. For instance 6 is a perfect number (Sum of 6 Divisors are: 1 + 2 + 3 = 6).  This Go program to find the Perfect Number uses for loop (for i := 1; i < perfNum; i++) and If statement (if perfNum%i == 0) to find the sum of the given number’s positive divisors. After the for loop, we used the If else statement (if perfNum == perfsum) to check whether the divisors’ sum equaled to a given number. If True, it is a perfect number; otherwise, not perfect.

package main

import "fmt"

func main() {

    var perfNum, perfsum int
    perfsum = 0

    fmt.Print("Enter the Number to find the Perfect = ")
    fmt.Scanln(&perfNum)

    for i := 1; i < perfNum; i++ {
        if perfNum%i == 0 {
            perfsum = perfsum + i
        }
    }

    if perfNum == perfsum {
        fmt.Println(perfNum, " is a Perfect Number")
    } else {
        fmt.Println(perfNum, " is Not a Perfect Number")
    }
}
SureshMac:Goexamples suresh$ go run perfect1.go
Enter the Number to find the Perfect = 6
6  is a Perfect Number
SureshMac:Goexamples suresh$ go run perfect1.go
Enter the Number to find the Perfect = 22
22  is Not a Perfect Number

Go Program to find the Number is Perfect using Functions

package main

import "fmt"

var perfsum int = 0

func perfectNum(perfNum int) int {
    for i := 1; i < perfNum; i++ {
        if perfNum%i == 0 {
            perfsum = perfsum + i
        }
    }
    return perfsum
}
func main() {

    var perfNum int

    fmt.Print("Enter the Number to find the Perfect = ")
    fmt.Scanln(&perfNum)

    perfsum = perfectNum(perfNum)

    if perfNum == perfsum {
        fmt.Println(perfNum, " is a Perfect Number")
    } else {
        fmt.Println(perfNum, " is Not a Perfect Number")
    }
}
SureshMac:Goexamples suresh$ go run perfect2.go
Enter the Number to find the Perfect = 28
28  is a Perfect Number
SureshMac:Goexamples suresh$ go run perfect2.go
Enter the Number to find the Perfect = 250
250  is Not a Perfect Number

This Golang program will find and print the Perfect numbers between the minimum and maximum limit.

package main

import "fmt"

func main() {

    var perfNum, perfMin, perfMax, perfsum int
    perfsum = 0

    fmt.Print("Enter the Minimum and Maximum limit of Perfect Numbers = ")
    fmt.Scanln(&perfMin, &perfMax)

    for perfNum = perfMin; perfNum <= perfMax; perfNum++ {
        perfsum = 0
        for i := 1; i < perfNum; i++ {
            if perfNum%i == 0 {
                perfsum = perfsum + i
            }
        }
        if perfNum == perfsum {
            fmt.Print(perfNum, "\t")
        }
    }
}
Golang Program to find the Perfect Number 3

About Suresh

Suresh is the founder of TutorialGateway and a freelance software developer. He specialized in Designing and Developing Windows and Web applications. The experience he gained in Programming and BI integration, and reporting tools translates into this blog. You can find him on Facebook or Twitter.