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();
}
}