Join Regular Classroom : Visit ClassroomTech

Coding Sample Questions | Part 2 | Codewindow.in

Problem Statement :

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. Given 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:

C

//www.codewindow.in
//start
#include<stdio.h>
#include<math.h>
int kPrimeFactor(int n, int k)
{
    while (n%2 == 0)
    {
    k--;
    n = n/2;
    if (k == 0)
        return 2;
    }
    for (int i = 3; i <= sqrt(n); i = i+2)
    {
    while (n%i == 0)
    {
    if (k == 1)
        return i;
    k--;
    n = n/i;
    }
}
if (n > 2 && k == 1)
return n;
return 1;
}
int main()
{
int n = 12, k = 3;
printf("%d",kPrimeFactor(n, k));
return 0;
}
//end

JAVA

//www.codewindow.in
//start
import java.io.*;
import java.math.*;
class GFG{
static int kPrimeFactor(int n, int k)
{
    while (n % 2 == 0)
    {
    k--;
    n = n / 2;
    if (k == 0)
        return 2;
    }
for (int i = 3; i <= Math.sqrt(n); i = i + 2)
{
    while (n % i == 0)
    {
    if (k == 1)
        return i;
    k--;
    n = n / i;
    }
}
if (n > 2 && k == 1)
return n;
return -1;
}
public static void main(String args[])
{
int n = 12, k = 3;
System.out.println(kPrimeFactor(n, k));
}
}
//end

Python

#www.codewindow.in
#please follow the indentation as its a must in python programing

import math
def kPrimeFactor(n,k) :
    while (n % 2 == 0) :
        k = k - 1
        n = n / 2
        if (k == 0) :
            return 2
    i = 3
    while i <= math.sqrt(n) :
        while (n % i == 0) :
            if (k == 1) :
                return i
                k = k - 1
                n = n / i
        i = i + 2
                
    if (n > 2 and k == 1) :
        return n
        return 1
n = 30
k = 7
print(kPrimeFactor(n, k))

#end

Follow Us

Also checkout