Find prime numbers in the first half and second half of an array
Last Updated :
25 May, 2022
Given an array arr of size N. The task is to find the prime numbers in the first half (up to index N/2) and the second half (all the remaining elements) of an array.
Examples:
Input : arr[] = {2, 5, 10, 15, 17, 21, 23 }
Output :2 5 and 17 23
Prime numbers in the first half of an array are 2, 5 and in the second half are 17, 23
Input : arr[] = {31, 35, 40, 43}
Output :31 and 43
Approach:
First Traverse the array up to N/2 and check all the elements whether they are prime or not and print the prime numbers. Then Traverse the array from N/2th element till N and find whether elements are prime or not and print all those elements which are prime.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
bool prime( int n)
{
for ( int i = 2; i * i <= n; i++)
if (n % i == 0)
return false ;
return true ;
}
void prime_range( int start, int end, int * a)
{
for ( int i = start; i < end; i++) {
if (prime(a[i]))
cout << a[i] << " " ;
}
}
void Print( int arr[], int n)
{
cout << "Prime numbers in the first half are " ;
prime_range(0, n / 2, arr);
cout << endl;
cout << "Prime numbers in the second half are " ;
prime_range(n / 2, n, arr);
cout << endl;
}
int main()
{
int arr[] = { 2, 5, 10, 15, 17, 21, 23 };
int n = sizeof (arr) / sizeof (arr[0]);
Print(arr, n);
return 0;
}
|
Java
import java.util.*;
class GFG
{
static boolean prime( int n)
{
for ( int i = 2 ; i * i <= n; i++)
if (n % i == 0 )
return false ;
return true ;
}
static void prime_range( int start,
int end, int [] a)
{
for ( int i = start; i < end; i++)
{
if (prime(a[i]))
System.out.print(a[i] + " " );
}
}
static void Print( int arr[], int n)
{
System.out.print( "Prime numbers in the first half are " );
prime_range( 0 , n / 2 , arr);
System.out.println();
System.out.print( "Prime numbers in the second half are " );
prime_range(n / 2 , n, arr);
System.out.println();
}
public static void main(String[] args)
{
int arr[] = { 2 , 5 , 10 , 15 , 17 , 21 , 23 };
int n = arr.length;
Print(arr, n);
}
}
|
Python3
def prime(n):
for i in range ( 2 , n):
if i * i > n:
break
if (n % i = = 0 ):
return False ;
return True
def prime_range(start, end, a):
for i in range (start, end):
if (prime(a[i])):
print (a[i], end = " " )
def Print (arr, n):
print ( "Prime numbers in the" ,
"first half are " , end = "")
prime_range( 0 , n / / 2 , arr)
print ()
print ( "Prime numbers in the" ,
"second half are " , end = "")
prime_range(n / / 2 , n, arr)
print ()
arr = [ 2 , 5 , 10 , 15 , 17 , 21 , 23 ]
n = len (arr)
Print (arr, n)
|
C#
using System;
class GFG
{
static Boolean prime( int n)
{
for ( int i = 2; i * i <= n; i++)
if (n % i == 0)
return false ;
return true ;
}
static void prime_range( int start,
int end, int [] a)
{
for ( int i = start; i < end; i++)
{
if (prime(a[i]))
Console.Write(a[i] + " " );
}
}
static void Print( int []arr, int n)
{
Console.Write( "Prime numbers in the first half are " );
prime_range(0, n / 2, arr);
Console.WriteLine();
Console.Write( "Prime numbers in the second half are " );
prime_range(n / 2, n, arr);
Console.WriteLine();
}
public static void Main(String[] args)
{
int []arr = { 2, 5, 10, 15, 17, 21, 23 };
int n = arr.Length;
Print(arr, n);
}
}
|
Javascript
<script>
function prime(n)
{
for (let i = 2; i * i <= n; i++)
if (n % i == 0)
return false ;
return true ;
}
function prime_range(start, end, a)
{
for (let i = start; i < end; i++) {
if (prime(a[i]))
document.write(a[i] + " " );
}
}
function Print(arr, n)
{
document.write( "Prime numbers in the first half are " );
prime_range(0, parseInt(n / 2), arr);
document.write( "<br>" );
document.write( "Prime numbers in the second half are " );
prime_range(parseInt(n / 2), n, arr);
document.write( "<br>" );
}
let arr = [ 2, 5, 10, 15, 17, 21, 23 ];
let n = arr.length;
Print(arr, n);
</script>
|
Output:
Prime numbers in the first half are 2 5
Prime numbers in the second half are 17 23
Time Complexity: O(n * sqrt(n)), as we are using a loop for traversing n times and each time for checking if a number is prime or not we are using a loop to traverse sqrt(n) times which will cost O(sqrt(n)).
Auxiliary Space: O(1), as we are not using any extra space.
Share your thoughts in the comments
Please Login to comment...