Number of 0s and 1s at prime positions in the given array
Last Updated :
25 Nov, 2021
Given an array arr[] of size N where each element is either 0 or 1. The task is to find the count of 0s and 1s which are at prime indices.
Examples:
Input: arr[] = {1, 0, 1, 0, 1}
Output:
Number of 0s = 1
Number of 1s = 1
Input: arr[] = {1, 0, 1, 1}
Output:
Number of 0s = 0
Number of 1s = 2
Approach: Traverse the array and for every 0 encountered update the count of 0s if the current index is prime and update the count of 1s for all the 1s which are at prime indices.
Below is the implementation of the above approach:
C++
#include<bits/stdc++.h>
using namespace std;
bool isPrime( int n)
{
if (n <= 1)
return false ;
for ( int i = 2; i < n; i++)
{
if (n % i == 0)
return false ;
}
return true ;
}
void countPrimePosition( int arr[], int n)
{
int c0 = 0, c1 = 0;
for ( int i = 0; i < n; i++)
{
if (arr[i] == 0 && isPrime(i))
c0++;
if (arr[i] == 1 && isPrime(i))
c1++;
}
cout << "Number of 0s = " << c0 << endl;
cout << "Number of 1s = " << c1;
}
int main()
{
int arr[] = { 1, 0, 1, 0, 1 };
int n = sizeof (arr) / sizeof (arr[0]);
countPrimePosition(arr, n);
return 0;
}
|
Java
class GFG {
static boolean isPrime( int n)
{
if (n <= 1 )
return false ;
for ( int i = 2 ; i < n; i++) {
if (n % i == 0 )
return false ;
}
return true ;
}
static void countPrimePosition( int arr[])
{
int c0 = 0 , c1 = 0 ;
int n = arr.length;
for ( int i = 0 ; i < n; i++) {
if (arr[i] == 0 && isPrime(i))
c0++;
if (arr[i] == 1 && isPrime(i))
c1++;
}
System.out.println( "Number of 0s = " + c0);
System.out.println( "Number of 1s = " + c1);
}
public static void main(String[] args)
{
int [] arr = { 1 , 0 , 1 , 0 , 1 };
countPrimePosition(arr);
}
}
|
Python3
def isPrime(n) :
if (n < = 1 ) :
return False ;
for i in range ( 2 , n) :
if (n % i = = 0 ) :
return False ;
return True ;
def countPrimePosition(arr) :
c0 = 0 ; c1 = 0 ;
n = len (arr);
for i in range (n) :
if (arr[i] = = 0 and isPrime(i)) :
c0 + = 1 ;
if (arr[i] = = 1 and isPrime(i)) :
c1 + = 1 ;
print ( "Number of 0s =" , c0);
print ( "Number of 1s =" , c1);
if __name__ = = "__main__" :
arr = [ 1 , 0 , 1 , 0 , 1 ];
countPrimePosition(arr);
|
C#
using System;
class GFG
{
static bool isPrime( int n)
{
if (n <= 1)
return false ;
for ( int i = 2; i < n; i++)
{
if ((n % i) == 0)
return false ;
}
return true ;
}
static void countPrimePosition( int []arr)
{
int c0 = 0, c1 = 0;
int n = arr.Length;
for ( int i = 0; i < n; i++)
{
if ((arr[i] == 0) && (isPrime(i)))
c0++;
if ((arr[i] == 1) && (isPrime(i)))
c1++;
}
Console.WriteLine( "Number of 0s = " + c0);
Console.WriteLine( "Number of 1s = " + c1);
}
static public void Main ()
{
int [] arr = { 1, 0, 1, 0, 1 };
countPrimePosition(arr);
}
}
|
Javascript
<script>
function isPrime(n) {
if (n <= 1)
return false ;
for (let i = 2; i < n; i++) {
if (n % i == 0)
return false ;
}
return true ;
}
function countPrimePosition(arr, n) {
let c0 = 0, c1 = 0;
for (let i = 0; i < n; i++) {
if (arr[i] == 0 && isPrime(i))
c0++;
if (arr[i] == 1 && isPrime(i))
c1++;
}
document.write( "Number of 0s = " + c0 + "<br>" );
document.write( "Number of 1s = " + c1);
}
let arr = [1, 0, 1, 0, 1];
let n = arr.length;
countPrimePosition(arr, n);
</script>
|
Output:
Number of 0s = 1
Number of 1s = 1
Time Complexity: O(n2)
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...