How to check if a number is Hoax or not in Java

What is a Hoax Number?

A Hoax number is defined as a composite number, whose sum of digits is equal to the sum of digits of its distinct prime factors.

Note: 1 is not considered a prime number, hence it is not included in the sum of digits of distinct prime numbers.

For example:

Input: 22
The sum of digits: 2+2=4
Prime factors: 2,11
The sum of digits of its distinct prime factors: 2+1+1=4
Output: it is a Hoax number

Input: 15
The sum of digits: 1+5=6
Prime factors: 3,5
The sum of digits of its distinct prime factors: 3+5=8
Output: it is not a Hoax number

Input: 84
The sum of digits: 8+4=12
Prime factors: 2,3,7,2
Distinct prime factors: 2,3,7
The sum of digits of its distinct prime factors: 2+3+7=12
Output: it is a Hoax number

Steps to find if Number is Hoax or not:

  1. Enter the number.
  2. Obtain prime factors of a number.
  3. Find the sum of digits of distinct prime factors.
  4. Find the sum of digits of the number.
  5. Check if the sum obtained from steps 3 and 4 are equal or not.
  6. If sums are equal then the number is a Hoax number.

How to check if a number is a Hoax or not in Java

Below is our given Java code that is checking a number if it is Hoax or not:

import java.util.*;
public class pfactors{
  public static void main(String[] args){
    int num,num1,sum=0,n,i,sum2=0,digit;
    Scanner sc=new Scanner(System.in);
    //enter the number
    n=sc.nextInt();		
    int temp=n;
    List<Integer> value = new ArrayList<Integer>(); 
    List<Integer> value1 = new ArrayList<Integer>();
  
    //check till number is greater than 1
    while(n>1){
      //find prime factors for a given number
      //smallest prime number is 2
      for(i=2;i<=n;i++){
        if(n%i==0){
          n=n/i;
          value.add(i);		//add in the arraylist
        }	
      }
    }
    //to check duplicates in the arraylist
    for(int x: value){
      if(!value1.contains(x)){
        value1.add(x);			//add distinct values from arraylist in another arraylist
      }
    }
    //find sum of digits in arraylist
    for(int j=0;j<value1.size();j++){
      num=value1.get(j);
    
      while(num>0){
        num1=num%10;
        if(num1!=0){
          sum=sum+num1;
        }
        num=num/10;
      }
    }
    System.out.println("sum of digits of prime factors: "+sum);
  
    //find sum of digits of the number entered
    while(temp>0){	
      digit=temp%10;
      sum2=sum2+digit;
      temp=temp/10;
    }
    System.out.println("sum of digits of number entered: "+sum2);

    //check if number is hoax or not
    if(sum==sum2){
      System.out.println("number is hoax");
    }
    else{
      System.out.println("number is not hoax");
    }	
  }
}

Output:

84
sum of digits of prime factors: 12
sum of digits of number entered: 12
number is hoax
15
sum of digits of prime factors: 8
sum of digits of number entered: 6
number is not hoax

Explanation of this program:

  1. Enter the number, n to be checked.
  2. If n is greater than 1, Iterate the loop. The prime number starts from 2, so initially, start the loop from 2, i.e. i=2.
  3. if n%i=0, add i in the ArrayList and return n=n/i for further iterations.
  4. To check distinct prime factors, check if the ArrayList contains any duplicate elements and add distinct elements in another ArrayList.
  5. Now, to find the sum of digits in ArrayList, iterate the loop till the size of ArrayList.
  6. Find the sum of each digit present in the array.
  7. Print the sum of digits of prime factors.
  8. Now, find the sum of digits of the number entered, and print.
  9. Finally, check the sums obtained from steps 7 and 8, if they are equal then the number is a Hoax else It is not a Hoax number.

This is how we can check if the number is a Hoax or not. I hope you find this tutorial useful.

One response to “How to check if a number is Hoax or not in Java”

  1. Shivan Mistry says:

    Keep it up ishikaa , even I want to learn Coding

Leave a Reply

Your email address will not be published. Required fields are marked *