📜  给定数组中素数位置的0和1的数量

📅  最后修改于: 2021-04-22 02:52:41             🧑  作者: Mango

给定大小为N的数组arr [] ,其中每个元素为01 。任务是找到在素数索引处的0和1的计数。

例子:

方法:遍历数组,如果当前索引为质数,则遇到的每个0将更新计数0,并为质数索引的所有1更新计数1。

下面是上述方法的实现:

C++
// C++ implementation of the approach
#include
using namespace std;
  
// Function that returns true
// if n is prime
bool isPrime(int n)
{
    if (n <= 1)
        return false;
  
    // Check from 2 to n
    for (int i = 2; i < n; i++) 
    {
        if (n % i == 0)
            return false;
    }
    return true;
}
  
// Function to find the count
// of 0s and 1s at prime indices
void countPrimePosition(int arr[], int n)
{
  
    // To store the count of 0s and 1s
    int c0 = 0, c1 = 0;
      
    for (int i = 0; i < n; i++)
    {
  
        // If current 0 is at
        // prime position
        if (arr[i] == 0 && isPrime(i))
            c0++;
  
        // If current 1 is at
        // prime position
        if (arr[i] == 1 && isPrime(i))
            c1++;
    }
    cout << "Number of 0s = " << c0 << endl;
    cout << "Number of 1s = " << c1;
}
  
// Driver code
int main()
{
    int arr [] = { 1, 0, 1, 0, 1 };
      
    int n = sizeof(arr)/ sizeof(arr[0]);
    countPrimePosition(arr, n);
    return 0;
}
  
// This code is contributed by ihritik


Java
// Java implementation of the approach
class GFG {
  
    // Function that returns true
    // if n is prime
    static boolean isPrime(int n)
    {
        if (n <= 1)
            return false;
  
        // Check from 2 to n
        for (int i = 2; i < n; i++) {
            if (n % i == 0)
                return false;
        }
        return true;
    }
  
    // Function to find the count
    // of 0s and 1s at prime indices
    static void countPrimePosition(int arr[])
    {
  
        // To store the count of 0s and 1s
        int c0 = 0, c1 = 0;
        int n = arr.length;
        for (int i = 0; i < n; i++) {
  
            // If current 0 is at
            // prime position
            if (arr[i] == 0 && isPrime(i))
                c0++;
  
            // If current 1 is at
            // prime position
            if (arr[i] == 1 && isPrime(i))
                c1++;
        }
        System.out.println("Number of 0s = " + c0);
        System.out.println("Number of 1s = " + c1);
    }
  
    // Driver code
    public static void main(String[] args)
    {
        int[] arr = { 1, 0, 1, 0, 1 };
        countPrimePosition(arr);
    }
}


Python3
# Python3 implementation of the approach 
  
# Function that returns true 
# if n is prime 
def isPrime(n) : 
      
    if (n <= 1) :
        return False; 
  
    # Check from 2 to n 
    for i in range(2, n) : 
        if (n % i == 0) :
            return False; 
          
    return True; 
  
# Function to find the count 
# of 0s and 1s at prime indices 
def countPrimePosition(arr) :
  
    # To store the count of 0s and 1s 
    c0 = 0; c1 = 0; 
    n = len(arr); 
      
    for i in range(n) : 
      
        # If current 0 is at 
        # prime position 
        if (arr[i] == 0 and isPrime(i)) :
            c0 += 1; 
      
        # If current 1 is at 
        # prime position 
        if (arr[i] == 1 and isPrime(i)) :
            c1 += 1; 
              
    print("Number of 0s =", c0); 
    print("Number of 1s =", c1); 
          
# Driver code 
if __name__ == "__main__" :
  
    arr = [ 1, 0, 1, 0, 1 ]; 
    countPrimePosition(arr); 
  
# This code is contributed by AnkitRai01


C#
// C# implementation of the approach
using System;
  
class GFG
{
      
    // Function that returns true
    // if n is prime
    static bool isPrime(int n)
    {
        if (n <= 1)
            return false;
  
        // Check from 2 to n
        for (int i = 2; i < n; i++) 
        {
            if ((n % i) == 0)
                return false;
        }
        return true;
    }
  
    // Function to find the count
    // of 0s and 1s at prime indices
    static void countPrimePosition(int []arr)
    {
  
        // To store the count of 0s and 1s
        int c0 = 0, c1 = 0;
        int n = arr.Length;
        for (int i = 0; i < n; i++) 
        {
  
            // If current 0 is at
            // prime position
            if ((arr[i] == 0) && (isPrime(i)))
                c0++;
  
            // If current 1 is at
            // prime position
            if ((arr[i] == 1) && (isPrime(i)))
                c1++;
        }
        Console.WriteLine("Number of 0s = " + c0);
        Console.WriteLine("Number of 1s = " + c1);
    }
  
    // Driver code
    static public void Main ()
    {
          
        int[] arr = { 1, 0, 1, 0, 1 };
        countPrimePosition(arr);
    }
}
  
// This code is contributed by ajit.


输出:
Number of 0s = 1
Number of 1s = 1