Given an array arr[] of N integers, the task is to remove all the prime numbers.
Examples:
Input: arr[] = {4, 6, 5, 3, 8, 7, 10, 11, 14, 15}
Output: 4 6 8 10 14 15Input: arr[] = {2, 4, 7, 8, 9, 11}
Output: 4 8 9
Approach: Traverse the array and check if the current number is prime, if it is then left shift all the elements after it to remove this prime number and decrease the value of the array length. Repeat this for all the elements of the array. To check the number is prime or not, use Sieve of Eratosthenes to generate all the primes.
Below is the implementation of the above approach:
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std;
const int sz = 1e5;
bool isPrime[sz + 1];
// Function for Sieve of Eratosthenes void sieve()
{ memset (isPrime, true , sizeof (isPrime));
isPrime[0] = isPrime[1] = false ;
for ( int i = 2; i * i <= sz; i++) {
if (isPrime[i]) {
for ( int j = i * i; j < sz; j += i) {
isPrime[j] = false ;
}
}
}
} // Function to print the elements of the array void printArray( int arr[], int len)
{ for ( int i = 0; i < len; i++) {
cout << arr[i] << ' ' ;
}
} // Function to remove all the prime numbers void removePrimes( int arr[], int len)
{ // Generate primes
sieve();
// Traverse the array
for ( int i = 0; i < len; i++) {
// If the current element is prime
if (isPrime[arr[i]]) {
// Shift all the elements on the
// right of it to the left
for ( int j = i; j < len; j++) {
arr[j] = arr[j + 1];
}
// Decrease the loop counter by 1
// to check the shifted element
i--;
// Decrease the length
len--;
}
}
if (len==0)
cout<< "We have removed all the prime number." ;
// Print the updated array
else
printArray(arr, len);
} // Driver code int main()
{ int arr[] = { 4, 6, 5, 3, 8, 7,
10, 11, 14, 15 };
int len = sizeof (arr) / sizeof ( int );
removePrimes(arr, len);
return 0;
} |
// Java implementation of the approach class GFG
{ static int sz = ( int ) 1e5;
static boolean []isPrime = new boolean [sz + 1 ];
// Function for Sieve of Eratosthenes static void sieve()
{ for ( int i = 0 ; i < sz + 1 ; i++)
isPrime[i] = true ;
isPrime[ 0 ] = isPrime[ 1 ] = false ;
for ( int i = 2 ; i * i <= sz; i++)
{
if (isPrime[i])
{
for ( int j = i * i; j < sz; j += i)
{
isPrime[j] = false ;
}
}
}
} // Function to print the elements of the array static void printArray( int arr[], int len)
{ for ( int i = 0 ; i < len; i++)
{
System.out.print(arr[i] + " " );
}
} // Function to remove all the prime numbers static void removePrimes( int arr[], int len)
{ // Generate primes
sieve();
// Traverse the array
for ( int i = 0 ; i < len; i++)
{
// If the current element is prime
if (isPrime[arr[i]])
{
// Shift all the elements on the
// right of it to the left
for ( int j = i; j < len- 1 ; j++)
{
arr[j] = arr[j + 1 ];
}
// Decrease the loop counter by 1
// to check the shifted element
i--;
// Decrease the length
len--;
}
}
// Print the updated array
printArray(arr, len);
} // Driver code public static void main(String[] args)
{ int arr[] = { 4 , 6 , 5 , 3 , 8 , 7 ,
10 , 11 , 14 , 15 };
int len = arr.length;
removePrimes(arr, len);
} } // This code is contributed by PrinciRaj1992 |
# Python3 implementation of the approach sz = 10 * * 5
isPrime = [ True for i in range (sz + 1 )]
# Function for Sieve of Eratosthenes def sieve():
isPrime[ 0 ] = isPrime[ 1 ] = False
i = 2
while i * i < sz:
if (isPrime[i]):
for j in range (i * i, sz, i):
isPrime[j] = False
i + = 1
# Function to print the elements of the array def printArray(arr, lenn):
for i in range (lenn):
print (arr[i], end = " " )
# Function to remove all the prime numbers def removePrimes(arr, lenn):
# Generate primes
sieve()
# Traverse the array
i = 0
while i < lenn:
# If the current element is prime
if (isPrime[arr[i]]):
# Shift all the elements on the
# right of it to the left
for j in range (i, lenn - 1 ):
arr[j] = arr[j + 1 ]
# Decrease the loop counter by 1
# to check the shifted element
i - = 1
# Decrease the length
lenn - = 1
i + = 1
# Print the updated array
printArray(arr, lenn)
# Driver code if __name__ = = '__main__' :
arr = [ 4 , 6 , 5 , 3 , 8 , 7 , 10 , 11 , 14 , 15 ]
lenn = len (arr)
removePrimes(arr, lenn)
# This code is contributed by Mohit Kumar |
// C# implementation of the approach using System;
class GFG
{ static int sz = ( int ) 1e5;
static bool []isPrime = new bool [sz + 1];
// Function for Sieve of Eratosthenes static void sieve()
{ for ( int i = 0; i < sz + 1; i++)
isPrime[i] = true ;
isPrime[0] = isPrime[1] = false ;
for ( int i = 2; i * i <= sz; i++)
{
if (isPrime[i])
{
for ( int j = i * i;
j < sz; j += i)
{
isPrime[j] = false ;
}
}
}
} // Function to print the elements // of the array static void printArray( int []arr,
int len)
{ for ( int i = 0; i < len; i++)
{
Console.Write(arr[i] + " " );
}
} // Function to remove // all the prime numbers static void removePrimes( int []arr,
int len)
{ // Generate primes
sieve();
// Traverse the array
for ( int i = 0; i < len; i++)
{
// If the current element is prime
if (isPrime[arr[i]])
{
// Shift all the elements on the
// right of it to the left
for ( int j = i; j < len - 1; j++)
{
arr[j] = arr[j + 1];
}
// Decrease the loop counter by 1
// to check the shifted element
i--;
// Decrease the length
len--;
}
}
// Print the updated array
printArray(arr, len);
} // Driver code public static void Main(String[] args)
{ int []arr = { 4, 6, 5, 3, 8, 7,
10, 11, 14, 15 };
int len = arr.Length;
removePrimes(arr, len);
} } // This code is contributed by PrinciRaj1992 |
<script> // Javascript implementation of the approach const sz = 1e5; let isPrime = new Array(sz + 1);
// Function for Sieve of Eratosthenes function sieve()
{ isPrime.fill( true )
isPrime[0] = isPrime[1] = false ;
for (let i = 2; i * i <= sz; i++)
{
if (isPrime[i])
{
for (let j = i * i; j < sz; j += i)
{
isPrime[j] = false ;
}
}
}
} // Function to print the elements of the array function printArray(arr, len)
{ for (let i = 0; i < len; i++)
{
document.write(arr[i] + ' ' );
}
} // Function to remove all the prime numbers function removePrimes(arr, len)
{ // Generate primes
sieve();
// Traverse the array
for (let i = 0; i < len; i++)
{
// If the current element is prime
if (isPrime[arr[i]])
{
// Shift all the elements on the
// right of it to the left
for (let j = i; j < len; j++)
{
arr[j] = arr[j + 1];
}
// Decrease the loop counter by 1
// to check the shifted element
i--;
// Decrease the length
len--;
}
}
// Print the updated array
printArray(arr, len);
} // Driver code let arr = [ 4, 6, 5, 3, 8, 7, 10, 11, 14, 15 ];
let len = arr.length; removePrimes(arr, len); // This code is contributed by _saurabh_jaiswal </script> |
4 6 8 10 14 15