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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.