Check whether a number is semiprime or not
Given a positive integer n. Find whether a number is a semiprime or not. Print True if number is semiprime else False. A semiprime is a natural number that is a product of two prime numbers.
Examples :
Input: 6
Output: True
Explanation
6 is a semiprime number as it is a
product of two prime numbers 2 and 3.
Input: 9
Output: True
Input: 8
Output: False
Approach: The approach is simple, factorize the given number by dividing it with the divisor of a number to remove the composite number. Meanwhile, keep updating the count variable of the prime number.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int checkSemiprime( int num)
{
int cnt = 0;
for ( int i = 2; cnt < 2 && i * i <= num; ++i)
while (num % i == 0)
num /= i, ++cnt;
if (num > 1)
++cnt;
return cnt == 2;
}
void semiprime( int n)
{
if (checkSemiprime(n))
cout << "True\n" ;
else
cout << "False\n" ;
}
int main()
{
int n = 6;
semiprime(n);
n = 8;
semiprime(n);
return 0;
}
|
C
#include <stdio.h>
int checkSemiprime( int num)
{
int cnt = 0;
for ( int i = 2; cnt < 2 && i * i <= num; ++i)
while (num % i == 0)
num /= i, ++cnt;
if (num > 1)
++cnt;
return cnt == 2;
}
void semiprime( int n)
{
if (checkSemiprime(n))
printf ( "True\n" );
else
printf ( "False\n" );
}
int main()
{
int n = 6;
semiprime(n);
n = 8;
semiprime(n);
return 0;
}
|
Java
class GFG{
static int checkSemiprime( int num)
{
int cnt = 0 ;
for ( int i = 2 ; cnt < 2 &&
i * i <= num; ++i)
while (num % i == 0 ){
num /= i;
++cnt;
}
if (num > 1 )
++cnt;
return cnt == 2 ? 1 : 0 ;
}
static void semiprime( int n)
{
if (checkSemiprime(n) != 0 )
System.out.printf( "True\n" );
else
System.out.printf( "False\n" );
}
public static void main(String[] args)
{
int n = 6 ;
semiprime(n);
n = 8 ;
semiprime(n);
}
}
|
Python3
import math
def checkSemiprime(num):
cnt = 0
for i in range ( 2 , int (math.sqrt(num)) + 1 ):
while num % i = = 0 :
num / = i
cnt + = 1
if cnt > = 2 :
break
if (num > 1 ):
cnt + = 1
return cnt = = 2
def semiprime(n):
if checkSemiprime(n) = = True :
print ( "True" )
else :
print ( "False" )
n = 6
semiprime(n)
n = 8
semiprime(n);
|
C#
using System;
class GFG{
static int checkSemiprime( int num)
{
int cnt = 0;
for ( int i = 2; cnt < 2 &&
i * i <= num; ++i)
while (num % i == 0){
num /= i;
++cnt;
}
if (num > 1)
++cnt;
return cnt == 2 ? 1 : 0;
}
static void semiprime( int n)
{
if (checkSemiprime(n) != 0)
Console.WriteLine( "True" );
else
Console.WriteLine( "False" );
}
public static void Main()
{
int n = 6;
semiprime(n);
n = 8;
semiprime(n);
}
}
|
Javascript
<script>
function checkSemiprime(num)
{
let cnt = 0;
for (let i = 2; cnt < 2 &&
i * i <= num; ++i)
while (num % i == 0){
num /= i;
++cnt;
}
if (num > 1)
++cnt;
return cnt == 2 ? 1 : 0;
}
function semiprime(n)
{
if (checkSemiprime(n) != 0)
document.write( "True" + "<br/>" );
else
document.write( "False" + "<br/>" );
}
let n = 6;
semiprime(n);
n = 8;
semiprime(n);
</script>
|
PHP
<?php
function checkSemiprime( $num )
{
$cnt = 0;
for ( $i = 2; $cnt < 2 &&
$i * $i <= $num ; ++ $i )
while ( $num % $i == 0)
$num /= $i ;
++ $cnt ;
if ( $num > 1)
++ $cnt ;
return $cnt == 2;
}
function semiprime( $n )
{
if (checkSemiprime( $n ))
echo "True\n" ;
else
echo "False\n" ;
}
$n = 6;
semiprime( $n );
$n = 8;
semiprime( $n );
?>
|
Time Complexity: O()
Auxiliary space: O(1)
Another Approach: To check whether a number is a semiprime or not, the idea is to factorize the given number into its prime factors. If the number has exactly two prime factors, then it is a semiprime. Below are the steps:
- Take input a positive integer N.
- Iterate from [2, N/2] and check if N is divisible by any of the numbers in the range then check if both the divisor and quotient are prime numbers. If yes, then the number is semiprime. Otherwise, it is not a semiprime number.
Below is the implementation of the above approach:
C++
#include <iostream>
#include <math.h>
using namespace std;
bool IsPrime( int num)
{
if (num <= 1) {
return false ;
}
for ( int i = 2; i <= sqrt (num); i++) {
if (num % i == 0) {
return false ;
}
}
return true ;
}
bool IsSemiPrime( int n)
{
for ( int i = 2; i <= n / 2; i++) {
if (n % i == 0) {
int quotient = n / i;
if (IsPrime(i) && IsPrime(quotient)) {
return true ;
}
}
}
return false ;
}
int main()
{
int N = 6;
cout << boolalpha << IsSemiPrime(N) << endl;
return 0;
}
|
Java
import java.io.*;
class GFG {
static boolean IsPrime( int num)
{
if (num <= 1 ) {
return false ;
}
for ( int i = 2 ; i <= Math.sqrt(num); i++) {
if (num % i == 0 ) {
return false ;
}
}
return true ;
}
static boolean IsSemiPrime( int n)
{
for ( int i = 2 ; i <= n / 2 ; i++) {
if (n % i == 0 ) {
int quotient = n / i;
if (IsPrime(i) && IsPrime(quotient)) {
return true ;
}
}
}
return false ;
}
public static void main (String[] args) {
int N = 6 ;
System.out.println(IsSemiPrime(N));
}
}
|
Python3
def is_prime(num):
if num < = 1 :
return False
for i in range ( 2 , int (num * * 0.5 ) + 1 ):
if num % i = = 0 :
return False
return True
def is_semiprime(n):
for i in range ( 2 , n / / 2 + 1 ):
if n % i = = 0 :
quotient = n / / i
if is_prime(i) and is_prime(quotient):
return True
return False
N = 6
print (is_semiprime(N))
|
C#
using System;
public class Program {
public static bool IsPrime( int num)
{
if (num <= 1) {
return false ;
}
for ( int i = 2; i <= Math.Sqrt(num); i++) {
if (num % i == 0) {
return false ;
}
}
return true ;
}
public static bool IsSemiPrime( int n)
{
for ( int i = 2; i <= n / 2; i++) {
if (n % i == 0) {
int quotient = n / i;
if (IsPrime(i) && IsPrime(quotient)) {
return true ;
}
}
}
return false ;
}
public static void Main()
{
int N = 6;
Console.WriteLine(IsSemiPrime(N));
}
}
|
Javascript
function isPrime(num) {
if (num <= 1) {
return false ;
}
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) {
return false ;
}
}
return true ;
}
function isSemiPrime(n) {
for (let i = 2; i <= n / 2; i++) {
if (n % i === 0) {
const quotient = n / i;
if (isPrime(i) && isPrime(quotient)) {
return true ;
}
}
}
return false ;
}
const N = 6;
console.log(isSemiPrime(N));
|
Time Complexity: O(N*log(log(N)))
Auxiliary Space: O(1)
Last Updated :
09 Dec, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...