How to get all the divisors of given number in Java?



Problem Description :


Write a program in Java that prints all the divisors of any given number.

Concept :


Divisors means numbers that are evenly divisible by given number. All the divisors should be less than or equal to given number. For example - number 12 has 6 divisors 1,2,3,4,6,12We can solve this problem either using brute force approach or some efficient algorithm.


Java Program :


1) Brute Force :


It will take lot of time if number is very large because in for loop one by one we are checking each number.

package com.javamultiplex.number;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 
 * @author Rohit Agarwal
 * @category Number Problems
 * @problem Print all the divisors of given number
 * 
 */
public class DivisorsBruteForce {

 public static void main(String[] args) {

  Scanner input = null;
  List<Integer> list = new ArrayList<>();
  int count = 0;
  try {
   input = new Scanner(System.in);
   System.out.println("Enter number : ");
   int number = input.nextInt();
   for (int i = 1; i <= number; i++) {
    if (number % i == 0) {
     count++;
     list.add(i);
    }
   }
   System.out.println("There are " + count + " divisors : " + list);
  } finally {
   if (input != null) {
    input.close();
   }
  }

 }

}

2) Efficient Algorithm :


This is an efficient algorithm because here we are not checking each number, for loop is running until square root of given number.

package com.javamultiplex.number;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

/**
 *
 * @author Rohit Agarwal
 * @category Number Problems
 * @problem Print all the divisors of given number
 *
 */
public class Divisors {

 public static void main(String[] args) {

  Scanner input = null;
  List<Integer> list = new ArrayList<>();
  try {
   input = new Scanner(System.in);
   System.out.println("Enter number :");
   int num = input.nextInt();
   int limit = (int) Math.sqrt(num);
   int temp = 0;
   for (int i = 1; i <= limit; i++) {
    if (num % i == 0) {
     list.add(i);
     temp = num / i;
     if (i != temp) {
      list.add(temp);
     }
    }
   }
   // Sorting list elements.
   Collections.sort(list);
   int divisors = list.size();
   System.out.println("There are " + divisors + " divisors : " + list);
  } finally {
   if (input != null) {
    input.close();
   }
  }

 }

}

Output :


Output of Java program that generates all the divisors of given number.
Output - How to get all the divisors of given number in Java?

References :



Thank you friends, I hope you have clearly understood the solution of this problem. If you have any doubt, suggestion or query please feel free to comment below. You can also discuss this solution in our forum.

Tags : Divisors of given number in Java, Solution in Java, List, ArrayList, Collections, for loop, if else statement, Sorting. 

About Author:

I am simple guy with lot of ambitions. My main motive is to share whatever knowledge I have related to programming. With me you can easily learn how to solve any programming problem in Java.You can connect with me on social networking sites also.


Let's Get Connected: Linkedin | Facebook |

How to get all the divisors of given number in Java? How to get all the divisors of given number in Java? Reviewed by Rohit Agarwal on 12/27/2016 Rating: 5

No comments:

Please provide your valuable comments. If you have any suggestion please share with me I will work on it and if you have any question or doubt please ask, don't hesitate. I am your friend, i will clarify all your doubts.

Powered by Blogger.