Blum Integer - GeeksforGeeks

05 May, 2021
Blum Integer is a semi-prime number, suppose p and q are the two factors (i.e. n = p * q), 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 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.
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++
Java
Python3
C#
PHP
Javascript
// CPP program to check if a number is a Blum// integer#include <bits/stdc++.h>using namespace std; // Function to cheek if number is Blum Integerbool 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 codeint main(){    // give odd integer greater than 20    int n = 249;     if (isBlumInteger(n))        cout << "Yes";    else        cout << "No";}
// Java implementation to check If// a number is a Blum integerimport 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 program to check if a# number is a Blum integer # Function to cheek if number# is Blum Integerdef 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 20n = 249if (isBlumInteger(n)):    print("Yes")else:    print("No") # This code is contributed by Smitha.
// C# implementation to check If// a number is a Blum integerusing 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// PHP program to check if a// number is a Blum integer // Function to cheek if// number is Blum Integerfunction isBlumInteger($n){    $prime = array_fill(0, $n + 1, true);     // to store prime    // numbers from 2 to n    for ($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 ($j = $i * 2; $j <= $n; $j += $i)                $prime[$j] = false;        }    }     // to check if the given    // odd integer is Blum    // Integer or not    for ($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)            {                $q = (int)$n / $i;                return ($q != $i && $prime[$q] &&                             ($q - 3) % 4 == 0);            }        }    }     return false;} // Driver code // give odd integer// greater than 20$n = 249; if (isBlumInteger($n))    echo "Yes";else    echo "No"; // This code is contributed by mits.?>
<script> // Javascript implementation to check If// a number is a Blum integerfunction isBlumInteger(n){    let prime = new Array(n + 1);    for(let i = 0; i < n; i++)        prime[i] = true;     // To store prime numbers from 2 to n    for(let 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(let j = i * 2; j <= n; j += i)                prime[j] = false;        }    }     // To check if the given odd integer    // is Blum Integer or not    for(let 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)            {                let q = parseInt(n / i, 10);                return (q != i && prime[q] &&                       (q - 3) % 4 == 0);            }        }    }    return false;} // Driver code // Give odd integer greater than 20let n = 249; if (isBlumInteger(n) == true)    document.write("Yes");else    document.write("No");     // This code is contributed by decode2207 </script>
Yes
 
jit_t
Smitha Dinesh Semwal
Mithun Kumar
arminphulkar
decode2207
Prime Number
prime-factor
Mathematical
Mathematical
Prime Number
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Algorithm to solve Rubik's Cube
Modular multiplicative inverse
Program to multiply two matrices
Program to convert a given number to words
Count ways to reach the n'th stair
Fizz Buzz Implementation
Singular Value Decomposition (SVD)
Program to print prime numbers from 1 to N.
Find first and last digits of a number
Check if a number is Palindrome