# Check if there exists a number with X factors out of which exactly K are prime

Given two integers **X** and **K**, the task is to determine whether there exists a number that has exactly **X** factors out of which **K** is prime.**Examples:**

Input:X = 8, K = 1Output:YesExplanation:

The number is 128

Factors of 128 = {1, 2, 4, 8, 16, 32, 64, 128} which are 8 in count = X

Among these, only 2 is prime. Therefore count of prime factor = 1 = KInput:X = 4, K = 2Output:YesExplanation:

The number is 6

Factors of 6 = {1, 2, 3, 6} which are 4 in count = X

Among these, only 2 and 3 are prime. Therefore count of prime factor = 2 = K

**Approach:**

- Suppose a number
**N**has**X**factors out of which**K**are prime, say

- Thus, number can be written as where, the total number of factors is calculated by

- It is observed that X is a product of “
**power+1**” of the prime factors of the number. Thus, if we are able to divide**X**into a product of**K**numbers, then we can form a number with exactly**X**factors out of which**K**is prime.

Below is the implementation of the above approach:

## C++

`// C++ program to check if there exists` `// a number with X factors` `// out of which exactly K are prime` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to check if such number exists` `bool` `check(` `int` `X, ` `int` `K)` `{` ` ` `int` `prime, temp, sqr, i;` ` ` `// To store the sum of powers` ` ` `// of prime factors of X which` ` ` `// determines the maximum count` ` ` `// of numbers whose product can form X` ` ` `prime = 0;` ` ` `temp = X;` ` ` `sqr = ` `sqrt` `(X);` ` ` `// Determining the prime factors of X` ` ` `for` `(i = 2; i <= sqr; i++) {` ` ` `while` `(temp % i == 0) {` ` ` `temp = temp / i;` ` ` `prime++;` ` ` `}` ` ` `}` ` ` `// To check if the number is prime` ` ` `if` `(temp > 2)` ` ` `prime++;` ` ` `// If X is 1, then we cannot form` ` ` `// a number with 1 factor and K` ` ` `// prime factor (as K is atleast 1)` ` ` `if` `(X == 1)` ` ` `return` `false` `;` ` ` `// If X itself is prime then it` ` ` `// can be represented as a power` ` ` `// of only 1 prime factor which` ` ` `// is X itself so we return true` ` ` `if` `(prime == 1 && K == 1)` ` ` `return` `true` `;` ` ` `// If sum of the powers of prime factors` ` ` `// of X is greater than or equal to K,` ` ` `// which means X can be represented as a` ` ` `// product of K numbers, we return true` ` ` `else` `if` `(prime >= K)` ` ` `return` `true` `;` ` ` `// In any other case, we return false` ` ` `// as we cannot form a number with X` ` ` `// factors and K prime factors` ` ` `else` ` ` `return` `false` `;` `}` `// Driver code` `int` `main()` `{` ` ` `int` `X, K;` ` ` `X = 4;` ` ` `K = 2;` ` ` `if` `(check(X, K))` ` ` `cout << ` `"Yes"` `;` ` ` `else` ` ` `cout << ` `"No"` `;` `}` |

## Java

`// Java program to check if there exists` `// a number with X factors` `// out of which exactly K are prime` ` ` `import` `java.util.*;` `class` `GFG{` ` ` `// Function to check if such number exists` `static` `boolean` `check(` `int` `X, ` `int` `K)` `{` ` ` `int` `prime, temp, sqr, i;` ` ` ` ` `// To store the sum of powers` ` ` `// of prime factors of X which` ` ` `// determines the maximum count` ` ` `// of numbers whose product can form X` ` ` `prime = ` `0` `;` ` ` `temp = X;` ` ` `sqr = (` `int` `) Math.sqrt(X);` ` ` ` ` `// Determining the prime factors of X` ` ` `for` `(i = ` `2` `; i <= sqr; i++) {` ` ` ` ` `while` `(temp % i == ` `0` `) {` ` ` `temp = temp / i;` ` ` `prime++;` ` ` `}` ` ` `}` ` ` ` ` `// To check if the number is prime` ` ` `if` `(temp > ` `2` `)` ` ` `prime++;` ` ` ` ` `// If X is 1, then we cannot form` ` ` `// a number with 1 factor and K` ` ` `// prime factor (as K is atleast 1)` ` ` `if` `(X == ` `1` `)` ` ` `return` `false` `;` ` ` ` ` `// If X itself is prime then it` ` ` `// can be represented as a power` ` ` `// of only 1 prime factor which` ` ` `// is X itself so we return true` ` ` `if` `(prime == ` `1` `&& K == ` `1` `)` ` ` `return` `true` `;` ` ` ` ` `// If sum of the powers of prime factors` ` ` `// of X is greater than or equal to K,` ` ` `// which means X can be represented as a` ` ` `// product of K numbers, we return true` ` ` `else` `if` `(prime >= K)` ` ` `return` `true` `;` ` ` ` ` `// In any other case, we return false` ` ` `// as we cannot form a number with X` ` ` `// factors and K prime factors` ` ` `else` ` ` `return` `false` `;` `}` ` ` `// Driver code` `public` `static` `void` `main(String[] args)` `{` ` ` `int` `X, K;` ` ` `X = ` `4` `;` ` ` `K = ` `2` `;` ` ` ` ` `if` `(check(X, K))` ` ` `System.out.print(` `"Yes"` `);` ` ` `else` ` ` `System.out.print(` `"No"` `);` `}` `}` `// This code contributed by Rajput-Ji` |

## Python3

`# Python3 program to check if there exists` `# a number with X factors` `# out of which exactly K are prime` `from` `math ` `import` `sqrt` `# Function to check if such number exists` `def` `check(X,K):` ` ` `# To store the sum of powers` ` ` `# of prime factors of X which` ` ` `# determines the maximum count` ` ` `# of numbers whose product can form X` ` ` `prime ` `=` `0` ` ` `temp ` `=` `X` ` ` `sqr ` `=` `int` `(sqrt(X))` ` ` `# Determining the prime factors of X` ` ` `for` `i ` `in` `range` `(` `2` `,sqr` `+` `1` `,` `1` `):` ` ` `while` `(temp ` `%` `i ` `=` `=` `0` `):` ` ` `temp ` `=` `temp ` `/` `/` `i` ` ` `prime ` `+` `=` `1` ` ` `# To check if the number is prime` ` ` `if` `(temp > ` `2` `):` ` ` `prime ` `+` `=` `1` ` ` `# If X is 1, then we cannot form` ` ` `# a number with 1 factor and K` ` ` `# prime factor (as K is atleast 1)` ` ` `if` `(X ` `=` `=` `1` `):` ` ` `return` `False` ` ` `# If X itself is prime then it` ` ` `# can be represented as a power` ` ` `# of only 1 prime factor w0hich` ` ` `# is X itself so we return true` ` ` `if` `(prime ` `=` `=` `1` `and` `K ` `=` `=` `1` `):` ` ` `return` `True` ` ` `# If sum of the powers of prime factors` ` ` `# of X is greater than or equal to K,` ` ` `# which means X can be represented as a` ` ` `# product of K numbers, we return true` ` ` `elif` `(prime >` `=` `K):` ` ` `return` `True` ` ` `# In any other case, we return false` ` ` `# as we cannot form a number with X` ` ` `# factors and K prime factors` ` ` `else` `:` ` ` `return` `False` `# Driver code` `if` `__name__ ` `=` `=` `'__main__'` `:` ` ` `X ` `=` `4` ` ` `K ` `=` `2` ` ` `if` `(check(X, K)):` ` ` `print` `(` `"Yes"` `)` ` ` `else` `:` ` ` `print` `(` `"No"` `)` `# This code is contributed by Surendra_Gangwar` |

## C#

`// C# program to check if there exists` `// a number with X factors` `// out of which exactly K are prime` `using` `System;` `class` `GFG{` ` ` `// Function to check if such number exists` ` ` `static` `bool` `check(` `int` `X, ` `int` `K)` ` ` `{` ` ` `int` `prime, temp, sqr, i;` ` ` ` ` `// To store the sum of powers` ` ` `// of prime factors of X which` ` ` `// determines the maximum count` ` ` `// of numbers whose product can form X` ` ` `prime = 0;` ` ` `temp = X;` ` ` `sqr = Convert.ToInt32(Math.Sqrt(X));` ` ` ` ` `// Determining the prime factors of X` ` ` `for` `(i = 2; i <= sqr; i++) {` ` ` ` ` `while` `(temp % i == 0) {` ` ` `temp = temp / i;` ` ` `prime++;` ` ` `}` ` ` `}` ` ` ` ` `// To check if the number is prime` ` ` `if` `(temp > 2)` ` ` `prime++;` ` ` ` ` `// If X is 1, then we cannot form` ` ` `// a number with 1 factor and K` ` ` `// prime factor (as K is atleast 1)` ` ` `if` `(X == 1)` ` ` `return` `false` `;` ` ` ` ` `// If X itself is prime then it` ` ` `// can be represented as a power` ` ` `// of only 1 prime factor which` ` ` `// is X itself so we return true` ` ` `if` `(prime == 1 && K == 1)` ` ` `return` `true` `;` ` ` ` ` `// If sum of the powers of prime factors` ` ` `// of X is greater than or equal to K,` ` ` `// which means X can be represented as a` ` ` `// product of K numbers, we return true` ` ` `else` `if` `(prime >= K)` ` ` `return` `true` `;` ` ` ` ` `// In any other case, we return false` ` ` `// as we cannot form a number with X` ` ` `// factors and K prime factors` ` ` `else` ` ` `return` `false` `;` ` ` `}` ` ` ` ` `// Driver code` ` ` `static` `public` `void` `Main ()` ` ` `{` ` ` `int` `X, K;` ` ` `X = 4;` ` ` `K = 2;` ` ` ` ` `if` `(check(X, K))` ` ` `Console.WriteLine(` `"Yes"` `);` ` ` `else` ` ` `Console.WriteLine(` `"No"` `);` ` ` `}` `}` `// This code is contributed by shubhamsingh10` |

## Javascript

`<script>` `// javascript program to check if there exists` `// a number with X factors` `// out of which exactly K are prime ` `// Function to check if such number exists` ` ` `function` `check(X , K) {` ` ` `var` `prime, temp, sqr, i;` ` ` `// To store the sum of powers` ` ` `// of prime factors of X which` ` ` `// determines the maximum count` ` ` `// of numbers whose product can form X` ` ` `prime = 0;` ` ` `temp = X;` ` ` `sqr = parseInt( Math.sqrt(X));` ` ` `// Determining the prime factors of X` ` ` `for` `(i = 2; i <= sqr; i++) {` ` ` `while` `(temp % i == 0) {` ` ` `temp = parseInt(temp / i);` ` ` `prime++;` ` ` `}` ` ` `}` ` ` `// To check if the number is prime` ` ` `if` `(temp > 2)` ` ` `prime++;` ` ` `// If X is 1, then we cannot form` ` ` `// a number with 1 factor and K` ` ` `// prime factor (as K is atleast 1)` ` ` `if` `(X == 1)` ` ` `return` `false` `;` ` ` `// If X itself is prime then it` ` ` `// can be represented as a power` ` ` `// of only 1 prime factor which` ` ` `// is X itself so we return true` ` ` `if` `(prime == 1 && K == 1)` ` ` `return` `true` `;` ` ` `// If sum of the powers of prime factors` ` ` `// of X is greater than or equal to K,` ` ` `// which means X can be represented as a` ` ` `// product of K numbers, we return true` ` ` `else` `if` `(prime >= K)` ` ` `return` `true` `;` ` ` `// In any other case, we return false` ` ` `// as we cannot form a number with X` ` ` `// factors and K prime factors` ` ` `else` ` ` `return` `false` `;` ` ` `}` ` ` `// Driver code` ` ` ` ` `var` `X, K;` ` ` `X = 4;` ` ` `K = 2;` ` ` `if` `(check(X, K))` ` ` `document.write(` `"Yes"` `);` ` ` `else` ` ` `document.write(` `"No"` `);` `// This code contributed by gauravrajput1` `</script>` |

**Output:**

Yes

Time Complexity: O(sqrt(n) * log n)

Auxiliary Space: O(1)

## Please

Loginto comment...