# Blum Integer

Blum Integer is the number which only haves 2 factors suppose p and q (i.e. n = p * q), both are Semi-prime and also they(p and q) are of the form 4t + 3, where t is some integer.

First few Blum Integers are 21, 33, 57, 69, 77, 93, 129, 133, 141, 161, 177, …

Note: Because of the condition that both the factors should be semi-primes, even numbers can not be Blum integers neither can be the numbers below 20,
So we have to check only for an odd integer greater than 20 that if it is a Blum Integer or not.

Examples :

```Input: 33
Output: Yes
Explanation: 33 = 3 * 11, 3 and 11 are both
semi-primes as well as of the form 4t + 3
for t = 0, 2

Input: 77
Output:  Yes
Explanation: 77 = 7 * 11, 7 and 11 both are
semi-prime as well as of the form 4t + 3
for t = 1, 2

Input: 25
Output: No
Explanation: 25 = 5*5, 5 and 5 are both
semi-prime  but are not of the form 4t
+ 3, Hence 25 is not a Blum integer.
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: For a given odd integer greater than 20, we calculate the prime numbers from 1 to that odd integer. If we find any prime number that divides that odd integer and its quotient both are prime and follow the form 4t + 3 for some integer, then the given odd integer is Blum Integer.

Below is the implementation of above approach :

## C++

 `// CPP program to check if a number is a Blum ` `// integer ` `#include ` `using` `namespace` `std; ` ` `  `// Function to cheek if number is Blum Integer ` `bool` `isBlumInteger(``int` `n) ` `{ ` `    ``bool` `prime[n + 1]; ` `    ``memset``(prime, ``true``, ``sizeof``(prime)); ` ` `  `    ``// to store prime numbers from 2 to n ` `    ``for` `(``int` `i = 2; i * i <= n; i++) { ` ` `  `        ``// If prime[i] is not ` `        ``// changed, then it is a prime ` `        ``if` `(prime[i] == ``true``) { ` ` `  `            ``// Update all multiples of p ` `            ``for` `(``int` `j = i * 2; j <= n; j += i) ` `                ``prime[j] = ``false``; ` `        ``} ` `    ``} ` ` `  `    ``// to check if the given odd integer ` `    ``// is Blum Integer or not ` `    ``for` `(``int` `i = 2; i <= n; i++) { ` `        ``if` `(prime[i]) { ` ` `  `            ``// checking the factors ` `            ``// are of 4t+3 form or not ` `            ``if` `((n % i == 0) && ((i - 3) % 4) == 0) { ` `                ``int` `q = n / i; ` `                ``return` `(q != i && prime[q] &&  ` `                           ``(q - 3) % 4 == 0); ` `            ``} ` `        ``} ` `    ``} ` ` `  `    ``return` `false``; ` `} ` ` `  `// driver code ` `int` `main() ` `{ ` `    ``// give odd integer greater than 20 ` `    ``int` `n = 249; ` ` `  `    ``if` `(isBlumInteger(n)) ` `        ``cout << ``"Yes"``; ` `    ``else` `        ``cout << ``"No"``; ` `} `

## Java

 `// Java implementation to check If ` `// a number is a Blum integer ` `import` `java.util.*; ` `class` `GFG { ` `    ``public` `static` `boolean` `isBlumInteger(``int` `n) ` `    ``{ ` `        ``boolean` `prime[] = ``new` `boolean``[n + ``1``]; ` `        ``for` `(``int` `i = ``0``; i < n; i++) ` `            ``prime[i] = ``true``; ` ` `  `        ``// to store prime numbers from 2 to n ` `        ``for` `(``int` `i = ``2``; i * i <= n; i++) { ` ` `  `            ``// If prime[i] is not changed, ` `            ``// then it is a prime ` `            ``if` `(prime[i] == ``true``) { ` ` `  `                ``// Update all multiples of p ` `                ``for` `(``int` `j = i * ``2``; j <= n; j += i) ` `                    ``prime[j] = ``false``; ` `            ``} ` `        ``} ` ` `  `        ``// to check if the given odd integer ` `        ``// is Blum Integer or not ` `        ``for` `(``int` `i = ``2``; i <= n; i++) { ` `            ``if` `(prime[i]) { ` ` `  `                ``// checking the factors are ` `                ``// of 4t + 3 form or not ` `                ``if` `((n % i == ``0``) && ((i - ``3``) % ``4``) == ``0``) { ` `                    ``int` `q = n / i; ` `                    ``return` `(q != i && prime[q] &&  ` `                            ``(q - ``3``) % ``4` `== ``0``); ` `                ``} ` `            ``} ` `        ``} ` `        ``return` `false``; ` `    ``} ` ` `  `    ``// driver code ` `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` `        ``// give odd integer greater than 20 ` `        ``int` `n = ``249``; ` ` `  `        ``if` `(isBlumInteger(n) == ``true``) ` `            ``System.out.println(``"Yes"``); ` `        ``else` `            ``System.out.println(``"No"``); ` `    ``} ` `} `

## Python 3

 `# python 3 program to check if a ` `# number is a Blum integer ` ` `  `# Function to cheek if number  ` `# is Blum Integer ` `def` `isBlumInteger(n): ` ` `  `    ``prime ``=` `[``True``]``*``(n ``+` `1``) ` ` `  `    ``# to store prime numbers from 2 to n ` `    ``i ``=` `2` `    ``while` `(i ``*` `i <``=` `n): ` ` `  `        ``# If prime[i] is not ` `        ``# changed, then it is a prime ` `        ``if` `(prime[i] ``=``=` `True``) : ` ` `  `            ``# Update all multiples of p ` `            ``for` `j ``in` `range``(i ``*` `2``, n ``+` `1``, i): ` `                ``prime[j] ``=` `False` `        ``i ``=` `i ``+` `1` `     `  `    ``# to check if the given odd integer ` `    ``# is Blum Integer or not ` `    ``for` `i ``in` `range``(``2``, n ``+` `1``) : ` `        ``if` `(prime[i]) :  ` ` `  `            ``# checking the factors ` `            ``# are of 4t+3 form or not ` `            ``if` `((n ``%` `i ``=``=` `0``) ``and`  `                        ``((i ``-` `3``) ``%` `4``) ``=``=` `0``): ` `                ``q ``=` `int``(n ``/` `i) ` `                ``return` `(q !``=` `i ``and` `prime[q]  ` `                       ``and` `(q ``-` `3``) ``%` `4` `=``=` `0``) ` `             `  `    ``return` `False` ` `  `# driver code ` `# give odd integer greater than 20 ` `n ``=` `249` `if` `(isBlumInteger(n)): ` `    ``print``(``"Yes"``) ` `else``: ` `    ``print``(``"No"``) ` ` `  `# This code is contributed by Smitha. `

## C#

 `// C# implementation to check If ` `// a number is a Blum integer ` `using` `System; ` ` `  `class` `GFG { ` `     `  `    ``public` `static` `bool` `isBlumInteger(``int` `n) ` `    ``{ ` `        ``bool``[] prime = ``new` `bool``[n + 1]; ` `        ``for` `(``int` `i = 0; i < n; i++) ` `            ``prime[i] = ``true``; ` ` `  `        ``// to store prime numbers from 2 to n ` `        ``for` `(``int` `i = 2; i * i <= n; i++) { ` ` `  `            ``// If prime[i] is not changed, ` `            ``// then it is a prime ` `            ``if` `(prime[i] == ``true``) { ` ` `  `                ``// Update all multiples of p ` `                ``for` `(``int` `j = i * 2; j <= n; j += i) ` `                    ``prime[j] = ``false``; ` `            ``} ` `        ``} ` ` `  `        ``// to check if the given odd integer ` `        ``// is Blum Integer or not ` `        ``for` `(``int` `i = 2; i <= n; i++) { ` `            ``if` `(prime[i]) { ` ` `  `                ``// checking the factors are ` `                ``// of 4t + 3 form or not ` `                ``if` `((n % i == 0) && ((i - 3) % 4) == 0)  ` `                ``{ ` `                    ``int` `q = n / i; ` `                    ``return` `(q != i && prime[q] &&  ` `                           ``(q - 3) % 4 == 0); ` `                ``} ` `            ``} ` `        ``} ` `        ``return` `false``; ` `    ``} ` `     `  `    ``// Driver code ` `    ``static` `public` `void` `Main () ` `    ``{ ` `        ``// give odd integer greater than 20 ` `        ``int` `n = 249; ` ` `  `        ``if` `(isBlumInteger(n) == ``true``) ` `            ``Console.WriteLine(``"Yes"``); ` `        ``else` `            ``Console.WriteLine(``"No"``); ` `    ``} ` `} ` ` `  `// This code is contributed by Ajit. `

## PHP

 ` `

Output:

```Yes
```

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.