C Programs Tutorials | IT Developer
IT Developer

Java Programs - Advanced



Share with a Friend

Hamming Number Program - Java Program

Hamming numbers are positive integers whose prime factors include 2, 3 and 5 only.

Example:
n = 6 is a hamming number as 6 = 2 × 3. So, its prime factors are limited to 2, 3.
n = 8 is a hamming number as 8 = 2 × 2 × 2 and it has only 2 as its prime factors.
n = 90 is a hamming number as 90 = 2 × 3 × 3 × 5 which has only 2, 3, 5 as prime factors.
n = 14 is not a hamming number as 14 = 2 × 7. It has 7 as one of its prime factors.
n = 44 is not a hamming number as 44 = 2 × 2 × 11. It has 11 as one of its prime factors.

Design a program to accept any positive integer number and check if it is a Hamming number or not. Display the result with an appropriate message in the format specified below. The program should also generate error message if a negative number is entered.

Test your program for the following data and some random data:

Example 1
INPUT: Enter any number: 3600
OUTPUT: 3600 = 2 × 2 × 2 × 2 × 3 × 3 × 5 × 5
3600 IS A HAMMING NUMBER

 

Example 2
INPUT: Enter any number: 5832
OUTPUT: 5832 = 2 × 2 × 2 × 3 × 3 × 3 × 3 × 3 × 3
5832 IS A HAMMING NUMBER

 

Example 3
INPUT: Enter any number: 7854
OUTPUT: 7854 = 2 × 3 × 7 × 11 × 17
7854 IS NOT A HAMMING NUMBER

 

Example 4
INPUT: Enter a number: -120
OUTPUT: NEGATIVE NUMBER ENTERED. INVALID INPUT

import java.util.Scanner; class Hamming{ public static void main(String[] args){ Scanner in = new Scanner(System.in); System.out.print("Enter a number: "); int n = Integer.parseInt(in.nextLine()); if(n < 0){ System.out.println("NEGATIVE NUMBER ENTERED. INVALID INPUT"); return; } boolean status = true; if(n < 2) status = false; int pf = 2; int num = n; int count = 0; while(num > 1){ if(num % pf == 0){ count++; if(count == 1) System.out.print(pf); else System.out.print(" x " + pf); num /= pf; if(pf != 2 && pf != 3 && pf != 5) status = false; } else pf++; } if(status) System.out.println("\n" + n + " IS A HAMMING NUMBER"); else System.out.println("\n" + n + " IS NOT A HAMMING NUMBER"); } }

Output

 
OUTPUT 1:

Enter a number: 3600
2 x 2 x 2 x 2 x 3 x 3 x 5 x 5
3600 IS A HAMMING NUMBER


Enter a number: 5832
2 x 2 x 2 x 3 x 3 x 3 x 3 x 3 x 3
5832 IS A HAMMING NUMBER


Enter a number: 7854
2 x 3 x 7 x 11 x 17
7854 IS NOT A HAMMING NUMBER