Java Modulus Example
In this post, we feature a comprehensive article about Java Modulus operator, modulo otherwise. We are going to learn what does ‘%’ mean in Java.
1. Introduction
This article will show the usage of the modulo operation in Java that computes the remainder after the division of 2 numbers. Java uses a specific arithmetic operator the Remainder Operator with the symbol %.
2. Java Modulus – Use Cases
In this section we show same useful use cases .
2.1 Basic Usage
Create a class with name ModulusExample1
and paste the following code :
ModulusExample1.java
package com.javacodegeeks; /** * @author Petros Koulianos * */ public class ModulusExample1 { public static void main(String[] args) { int x = 3; int z = 10; int y = -23; int w = -12; double d = 2.15; float f= 3.6f; int zero=0; //positive number modulus positive number //the result is the remainder of the division System.out.println("positive number modulus positive int number: "+z % x); System.out.println("positive number modulus positive double number: "+z % d); System.out.println("positive number modulus positive float number: "+z % f); //negative number modulus positive number //the result is negative System.out.println("negative number modulus positive number: "+ y % z); //negative number modulus negative number //the result is the negative remainder of the division System.out.println("negative number modulus negative number: "+w % y); //zero number modulus number //the result is zero System.out.println("zero modulus number : "+zero % z); // number modulus zero //throws java.lang.ArithmeticException , it must surround with try catch brackets //in order to avoid crush the execution try { System.out.println("number modulus zero : "+z % zero); }catch(ArithmeticException e) { //print stack trace e.printStackTrace(); } } }
Console Output
positive number modulus positive int number: 1 positive number modulus positive double number: 1.4000000000000004 positive number modulus positive float number: 2.8000002 negative number modulus positive number: -3 negative number modulus negative number: -12 zero modulus number : 0 java.lang.ArithmeticException: / by zero at com.javacodegeeks.ModulusExample1.main(ModulusExample1.java:48)
2.2 Find if a number is odd or even
Create a class with name ModulusExample2
and paste the following code :
ModulusExample2.java
package com.javacodegeeks; /** * @author Petros Koulianos * */ public class ModulusExample2 { public static void main(String[] args) { // find out when a number is even or odd for(int i=0 ; i<=10000; i++) { //modulus each number with 2 if(i % 2 == 0) { //number is even System.out.println("number "+i+" is even"); }else { //number is odd System.out.println("number "+i+" is odd"); } } } }
The most noteworthy case to use the modulo operation is to find if a given number is even or odd . The above code run a loop to check the numbers if it is odd or even , by modulus each number by 2.
2.3 Perform an action at nth number of times in loop
Create a class with name ModulusExample3
and paste the following code :
ModulusExample3.java
package com.javacodegeeks; import java.util.ArrayList; import java.util.List; /** * @author Petros Koulianos * */ public class ModulusExample3 { public static void main(String[] args) { // perform an action at n-th number of loops List bigList = getList(); int n = 1000; // n-th times for (int i = 0; i < bigList.size(); i++) { // check the process of the running list every 1000 loops if (i % n == 0) { // calculate the process of the running list double process = (100 * i) / bigList.size(); // you can update your UI with a process bar System.out.println("process " + process + "%"); } } // your list ended System.out.println("process 100.0%"); } // method to generate a list, simulating a very large dataset // from database or file(csv , xml etc) or web service (json etc) public static List getList() { List list = new ArrayList(); for (int i = 0; i < 98562; i++) { double x = Math.random(); list.add(x * 1000); } return list; } }
Console Output
process 0.0% process 1.0% process 2.0% ... ... ... process 98.0% process 99.0% process 100.0%
2.4 Find the greatest common divisor
The euclidian algorithm uses the modulo operation , in order to find the greatest common division.
Create a class with name ModulusExample4
and paste the following code :
ModulusExample4.java
package com.javacodegeeks; /** * @author Petros Koulianos * */ public class ModulusExample4 { public static void main(String[] args) { // This example implements the Euclidean algorithm from //https://en.wikipedia.org/wiki/Euclidean_algorithm#Implementations int a = 1071; int b = 462; int temp ; while (b != 0) { temp = b; b = a % b; a = temp; } System.out.println("The Greatest Common Division is "+a); } }
Console Output
The Greatest Common Division is 21
2.5 Find out if an integer is prime number.
Another usage of modulo operation is in the algorithm of prime numbers .
Create a class with name ModulusExample5
and paste the following code :
ModulusExample5.java
package com.javacodegeeks; /** * @author Petros Koulianos * */ public class ModulusExample5 { public static void main(String[] args) { //This example implements prime number algorithm //from https://en.wikipedia.org/wiki/Prime_number#Computational_methods int x = 28 ; int y = 113; int temp1 = 0; int temp2 = 0; // run a loop from 2 to square root x for(int i=2 ; i <= Math.sqrt(x); i++) { if(x % i == 0) { // i number can multiply x temp1 ++; } } // run a loop from 2 to square root y for(int i=2 ; i <= Math.sqrt(y); i++) { if(y % i == 0) { // i number can multiply y temp2 ++; } } // if x or y has zero multipliers is prime if(temp1 == 0) { System.out.println("number "+x+" is prime"); }else { System.out.println("number "+x+" is not prime"); } if(temp2 == 0) { System.out.println("number "+y+" is prime"); }else { System.out.println("number "+y+" is not prime"); } } }
Console Output
number 28 is not prime number 113 is prime
3. Download the Source Code
This was an example about how to use the Java Modulus ( Remainder Operator ).
You can download the full source code of this example here: Java Modulus Example