A positive integer d is said to be a factor of another positive integer N if when N is divided by d, the remainder obtained is zero. For example, for number 12, there are 6 factors 1, 2, 3, 4, 6, 12. Every positive integer k has at least two factors, 1 and the number k itself. Give two positive integers N and k, write a program to print the kth largest factor of N.
Input Format:
The input is a comma-separated list of positive integer pairs (N, k)
Output Format:
The kth highest factor of N. If N does not have k factors, the output should be 1.
Constraints:
1<N<10000000000. 1<k<600. You can assume that N will have no prime factors which are larger than 13.
Sample Input 1:
12,3
Sample Output 1:
4
Explanation:
N is 12, k is 3. The factors of 12 are (1,2,3,4,6,12). The highest factor is 12 and the third largest factor is 4. The output must be 4
Sample Input 2:
30,9
Sample Output 2:
1
Explanation:
N is 30, k is 9. The factors of 30 are (1,2,3,5,6,10,15,30). There are only 8 factors. As k is more than the number of factors, the output is 1.
Solution: In C
#include<stdio.h>
int kLargestFactor(int n, int k)
{
for(int i=n;i>0;i--) {
if (n % i == 0)
k--;
if (k == 0)
return i;
}
return 1;
}
int main()
{
int n,k;
scanf("%d,%d",&n,&k);
printf("%d",kLargestFactor(n, k));
return 0;
}
Solution: In Java
import java.io.*;
import java.util.*;
class GFG {
static int KthLargestFactor(int n, int k)
{
for (int i = n; i > 0; i--) {
if (n % i == 0)
k--;
if (k == 0)
return i;
}
return 1;
}
public static void main(String[] args) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split(",");
int N = Integer.parseInt(str[0]);
int K = Integer.parseInt(str[1]);
System.out.println(KthLargestFactor(N, K));
}
}
Solution: In Python 3
def KthLargestFactor(n, k):
for i in range(n, 0, -1):
if n % i == 0:
k -= 1
if k == 0:
return i
return 1
st = str(input()).split(",")
N = int(st[0])
K = int(st[1])
print(KthLargestFactor(N, K))
Also Checkout