# 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,12. We 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__ :

##
__References__ :

https://www.khanacademy.org/math/pre-algebra/pre-algebra-factors-multiples/pre-algebra-factors-mult/v/finding-factors-of-a-number

https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#sort(java.util.List)

https://docs.oracle.com/javase/7/docs/api/java/util/List.html

https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#sort(java.util.List)

https://docs.oracle.com/javase/7/docs/api/java/util/List.html

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.**

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

## 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.