Perfect Number | ISC Computer Science 2018 Theory

Design a class Perfect to check if a given number is a perfect number or not. A number is said to be perfect if the sum of the factors of the number excluding itself is equal to the original number.

Example: 6 = 1 + 2 + 3 (where 1, 2 and 3 are factors of 6, excluding itself)

Class name: Perfect
Data members/instance variables:
num: to store the number
Methods/Member functions:
Perfect(int nn): parameterized constructor to initialize the data member num = nn
int sum_of_factors(int i): returns the sum of the factors of the number (num), excluding itself, using recursive technique
void check(): checks whether the given number is perfect by invoking the function sum_of_factors() and displays the result with an appropriate message

Specify the class Perfect giving details of the constructor(), int sum_of_factors(int) and void check(). Define a main() function to create an object and call the functions accordingly to enable the task.

import java.util.Scanner;
class Perfect{
    int num;
    public Perfect(int nn){
        num = nn;
    }
    public int sum_of_factors(int i){
        if(i > num / 2)
            return 0;
        if(num % i == 0)
            return i + sum_of_factors(i + 1);
        return sum_of_factors(i + 1);
    }
    public void check(){
        if(num == sum_of_factors(1))
            System.out.println("Perfect number!");
        else
            System.out.println("Not a perfect number.");
    }
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        System.out.print("Enter the number: ");
        int n = Integer.parseInt(in.nextLine());
        Perfect obj = new Perfect(n);
        obj.check();
    }
}