Kth Largest Factor Of N - Tcs Previous Year Qustions

Fri, 07 Aug, 2020

kth Largest factor of N

Problem Description

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

Example 1

  • Input: 12,3
  • Output: 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.

Example 2

  • Input: 30,9
  • Output: 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 <iostream>
using namespace std;
int main() 
{
int number,pos_of_factor,i,c=0;
cin>>number;
cin>>pos_of_factor;
for(i=number;i>=1;i--)
{
  if((number%i)==0)
     c++;
  if(c==pos_of_factor)
  {
     cout<<i;
     break;
  }
}
if(c<pos_of_factor)
  cout<<1;
return 0;
}


Solution in C


#include  <stdio.h>
void main() 
{
int number,pos_of_factor,i,c=0;
scanf("%d",&number);
scanf("%d",&pos_of_factor);
for(i=number;i>=1;i--)
{
  if((number%i)==0)
  c++;
  if(c==pos_of_factor)
  {
  printf("%d",i);
  break;
  }
}
if(c<pos_of_factor)
printf("1");
}

Solution in Java


import java.util.Scanner;
public class Main  {
       public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       
       int number,r,i,count=0;
       number = sc.nextInt();
       r = sc.nextInt();
       
       for (i = number; i >= 1; i--) 
       {
          if((number%i)==0)
              count++;
          if(count==r)
          {
              System.out.println(i);
              break;
          }
       }
       if(count!=r)
           System.out.println(1);
    

    }

}

Solution in Python


number, k = [int(i) for i in input().split(",")]
factor = []
count = 0
for i in range(1, number+1):
    if number % i == 0:
        count = count + 1
        factor.append(i)

if count < k:
    print("1")
else:
    print(factor[k])

 

0 comments
Leave a comment