# Kth largest factor of number N

• Last Updated : 03 Sep, 2021

Given two positive integers N and K, the task is to print the Kth largest factor of N.

Input: N = 12, K = 3
Output: 4
Explanation: The factors of 12 are {1, 2, 3, 4, 6, 12}. The largest factor is 12 and the 3rd largest factor is 4.

Input: N = 30, K = 2
Output: 15
Explanation: The factors of 30 are {1, 2, 3, 5, 6, 10, 15, 30} and the 2nd largest factor is 15.

Approach: The idea is to check for each number in the range [N, 1], and print the Kth number that divides N completely.

Iterate through the loop from N to 0. Now, for each number in this loop:

• Check if it divides N or not.
• If N is divisible by the current number, decrement the value of K by 1.
• When K becomes 0, this means that the current number is the Kth largest factor of N.
• Print the answer according to the above observation.

Below is the implementation of the above approach:

## C

 `// C program for the above approach`   `#include `   `// Function to print Kth largest` `// factor of N` `int` `KthLargestFactor(``int` `N, ``int` `K)` `{`   `    ``// Check for numbers` `    ``// in the range [N, 1]` `    ``for` `(``int` `i = N; i > 0; i--) {`   `        ``// Check if i is a factor of N` `        ``if` `(N % i == 0)`   `            ``// If Yes, reduce K by 1` `            ``K--;`   `        ``// If K is 0, it means` `        ``// i is the required` `        ``// Kth factor of N` `        ``if` `(K == 0) {` `            ``return` `i;` `        ``}` `    ``}`   `    ``// When K is more` `    ``// than the factors of N` `    ``return` `-1;` `}`   `// Driver Code` `int` `main()` `{` `    ``int` `N = 12, K = 3;` `    ``printf``(``"%d"``, KthLargestFactor(N, K));` `    ``return` `0;` `}`

## C++

 `// C++ program for the above approach`   `#include ` `using` `namespace` `std;`   `// Function to print Kth largest` `// factor of N` `int` `KthLargestFactor(``int` `N, ``int` `K)` `{` `    ``// Check for numbers` `    ``// in the range [N, 1]` `    ``for` `(``int` `i = N; i > 0; i--) {`   `        ``// Check if i is a factor of N` `        ``if` `(N % i == 0)`   `            ``// If Yes, reduce K by 1` `            ``K--;`   `        ``// If K is 0, it means` `        ``// i is the required` `        ``// Kth factor of N` `        ``if` `(K == 0) {` `            ``return` `i;` `        ``}` `    ``}`   `    ``// When K is more` `    ``// than the factors of N` `    ``return` `-1;` `}`   `// Driver Code` `int` `main()` `{` `    ``int` `N = 12, K = 3;` `    ``cout << KthLargestFactor(N, K);` `}`

## Java

 `// Java program for the above approach`   `import` `java.io.*;`   `class` `GFG {`   `    ``// Function to print Kth largest` `    ``// factor of N` `    ``static` `int` `KthLargestFactor(``int` `N, ``int` `K)` `    ``{` `        ``// Check for numbers` `        ``// in the range [N, 1]` `        ``for` `(``int` `i = N; i > ``0``; i--) {`   `            ``// Check if i is a factor of N` `            ``if` `(N % i == ``0``)`   `                ``// If Yes, reduce K by 1` `                ``K--;`   `            ``// If K is 0, it means` `            ``// i is the required` `            ``// Kth factor of N` `            ``if` `(K == ``0``) {` `                ``return` `i;` `            ``}` `        ``}`   `        ``// When K is more` `        ``// than the factors of N` `        ``return` `-``1``;` `    ``}`   `    ``// Driver Code` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``int` `N = ``12``, K = ``3``;` `        ``System.out.println(KthLargestFactor(N, K));` `    ``}` `}`

## Python

 `# Python program for the above approach`   `# Function to print Kth largest` `# factor of N` `def` `KthLargestFactor(N, K):` `    ``for` `i ``in` `range``(N, ``0``, ``-``1``):` `        ``if` `N ``%` `i ``=``=` `0``:` `            ``K ``-``=` `1` `        ``if` `K ``=``=` `0``:` `            ``return` `i` `    ``return` `-``1`     `# Driver Code` `N ``=` `12` `K ``=` `3` `print``(KthLargestFactor(N, K))`

## C#

 `// C# program for the above approach` `using` `System;` `using` `System.Collections.Generic;`   `class` `GFG{`   `// Function to print Kth largest` `// factor of N` `static` `int` `KthLargestFactor(``int` `N, ``int` `K)` `{`   `    ``// Check for numbers` `    ``// in the range [N, 1]` `    ``for` `(``int` `i = N; i > 0; i--) {`   `        ``// Check if i is a factor of N` `        ``if` `(N % i == 0)`   `            ``// If Yes, reduce K by 1` `            ``K--;`   `        ``// If K is 0, it means` `        ``// i is the required` `        ``// Kth factor of N` `        ``if` `(K == 0) {` `            ``return` `i;` `        ``}` `    ``}`   `    ``// When K is more` `    ``// than the factors of N` `    ``return` `-1;` `}`   `// Driver Code` `public` `static` `void` `Main()` `{` `    ``int` `N = 12, K = 3;` `    ``Console.Write(KthLargestFactor(N, K));` `}` `}`   `// This code is contributed by ipg2016107.`

## Javascript

 ``

Output:

`4`

Time Complexity: Auxiliary Space: My Personal Notes arrow_drop_up
Recommended Articles
Page :