Find prime numbers in the first half and second half of an array
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.
Last Updated :
25 May, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...