Java program to check if a number is a Moran number or not:
In this post, we will discuss how to check if a number is a Moran number or not. We will learn what is a Moran number and how to check if a number is Moran. The Java program will take one number as input from the user, check if the number is Moran or not and print the result.
What is a Moran number:
A number is called a Moran number if we divide the number by the sum of its digits, it returns a prime number. So, we have to calculate the sum of the digits and divide the number by this sum. If the result is a prime number, we can print that it is a Moran number. Else, it is not.
The program will take one number as input from the user and print if it is a Moran number or not.
Algorithm to check if a number is Moran:
We can use the below algorithm to check if a number is a Moran number or not:
- Take the number as input from the user.
- Find the sum of the digits of the number:
- Initialize one variable as 0 to hold the sum of digits of the number.
- Run one loop that will run until the value of the number becomes 0.
- On each iteration of the loop, find the last digit of the number. Add this to the sum variable.
- Remove the last digit from the number before moving to the next iteration.
- Once the loop will end, the sum variable will hold the sum of the digits of the number.
- Divide the number by the sum of digits. Check if it is a prime number or not.
- To check if the number is prime:
- Use a loop from i = 2 to i = number/2.
- On each iteration, check if the number is divisible by i or not.
- If yes, the number will be a prime number as it is divisible by 1 and another number that is not equal to the number itself.
- Else, the number is not a prime number.
- If the result is prime, the given number is a Moran number. Else, it is not a Moran number.
Let’s use the above algorithm to write a program in Java.
Method 1: Java program to check if a number is Moran or not:
The following program checks if a number is a Moran number or not:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// part 1
int number;
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a number: ");
number = scanner.nextInt();
// part 2
int sumOfDigits = 0, lastDigit, copyNumber = number;
while (copyNumber > 0) {
lastDigit = copyNumber % 10;
sumOfDigits += lastDigit;
copyNumber = copyNumber / 10;
}
int divisionResult = number / sumOfDigits;
// part 3
boolean isPrime = true;
for (int i = 2; i <= divisionResult / 2; i++) {
if (divisionResult % i == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
System.out.println(number + " is a Moran number.");
} else {
System.out.println(number + " is not a Moran number.");
}
}
}
I divided the program into three parts. In part 1,
- The integer variable number is used to keep the user input number.
- The Scanner variable scanner is used to read user inputs. It asks the user to enter a number and by using the scanner object, it reads the number.
In part 2,
- It is finding the sum of the digits of the number.
- It creates a copy of the number, copyNumber and with a while loop, it finds the sum of the digits of the number.
- The last digit of the number is found by using %10.
- The last digit is added to the sumOfDigits variable, which is used to store the sum of the digits of the number.
- At the end of each iteration, it removes the last digit from the number by dividing the number by 10.
- It divides the number by the sum of digits of the number and assigns the value to the divisionResult variable.
In part 3,
- It is checking if the result, divisionResult is prime or not.
- It creates one boolean variable isPrime as true.
- It runs one for loop from i = 2 to i = divisionResult/2. On each iteration, it checks if it is divisible by i or not. If yes, it assigns false to the variable isPrime and breaks from the loop.
- If the value of isPrime is true, it prints that the number is a Moran number. Else, it is not a Moran number.
If you run this, it will print the below output:
Enter a number:
46
46 is not a Moran number.
Enter a number:
45
45 is a Moran number.
Method 2: By breaking the program into different methods:
Let’s break the above program into different methods. We can use separate methods to:
- Calculate the sum of the digits of the number.
- To check if a number is prime or not.
- To check if a number is a Moran number or not.
The method to check for the Moran number will call the other two methods.
import java.util.Scanner;
public class Main {
private static int getSum(int number) {
int sumOfDigits = 0, lastDigit, copyNumber = number;
while (copyNumber > 0) {
lastDigit = copyNumber % 10;
sumOfDigits += lastDigit;
copyNumber = copyNumber / 10;
}
return sumOfDigits;
}
private static boolean isPrime(int number) {
for (int i = 2; i <= number / 2; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
private static boolean isMoran(int number) {
int sumOfDigits = getSum(number);
int divisionResult = number / sumOfDigits;
return isPrime(divisionResult);
}
public static void main(String[] args) {
int number;
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a number: ");
number = scanner.nextInt();
if (isMoran(number)) {
System.out.println(number + " is a Moran number.");
} else {
System.out.println(number + " is not a Moran number.");
}
}
}
Here,
- The getSum method is used to find the sum of the digits of a number. It takes one number as its parameter and returns the sum.
- The isPrime method checks if a number is a prime number or not. It takes one number as its parameter and returns one boolean value, true if it is a prime and false otherwise.
- The isMoran method checks if a number is a Moran number or not. It also takes one number as its parameter and returns one boolean value.
It will print similar output.
You might also like:
- Java program to print left-aligned and right-aligned staircase patterns
- 4 ways in Java to convert a decimal value to octal
- Java program to round a number to n decimal places
- Java program to print the vowels in a string
- Java program to print inverted Pyramid patterns in different ways
- Java program to print a diamond pattern with stars
- 2 different Java programs to check for Moran number