📜  数组中互质对的数量

📅  最后修改于: 2021-04-24 23:47:07             🧑  作者: Mango

互素数或互素数对是那些GCD为1的数字对。给定大小为n的数组,请找到该数组中互素数或互素数对的数量。

例子:

Input : 1 2 3
Output : 3
Here, Co-prime pairs are ( 1, 2), ( 2, 3), 
                         ( 1, 3)   

Input :4 8 3 9
Output :4
Here, Co-prime pairs are  ( 4, 3), ( 8, 3), 
                         ( 4, 9 ), ( 8, 9 )  

方法:使用两个循环,检查数组的每个可能的对。如果该对的Gcd为1,则递增计数器值,最后显示该值。

C++
// C++ program to find
// number of co-prime 
// pairs in array
#include 
using namespace std;
  
// function to check for gcd
bool coprime(int a, int b)
{   
    return (__gcd(a, b) == 1);
}
  
// Recursive function to
// return gcd of a and b
int numOfPairs(int arr[], int n)
{ 
      
    int count = 0; 
    for (int i = 0; i < n - 1; i++) 
        for (int j = i + 1; j < n; j++)
            if (coprime(arr[i], arr[j]))
                count++;
                  
    return count;
}
  
// driver code
int main()
{
    int arr[] = { 1, 2, 5, 4, 8, 3, 9 };
    int n = sizeof(arr) / sizeof(arr[0]); 
    cout << numOfPairs(arr, n);
    return 0;
}


Java
// Java program to find
// number of co-prime 
// pairs in array
import java.io.*;
  
class GFG {
      
    // Recursive function to
    // return gcd of a and b
    static int gcd(int a, int b)
    {
        // Everything divides 0 
        if (a == 0 || b == 0)
        return 0;
      
        // base case
        if (a == b)
            return a;
      
        // a is greater
        if (a > b)
            return gcd(a-b, b);
              
        return gcd(a, b-a);
    }
      
    // function to check for gcd
    static boolean coprime(int a, int b)
    {
        return (gcd(a, b) == 1);
    }
      
    // Returns count of co-prime
    // pairs present in array
    static int numOfPairs(int arr[], int n) 
    { 
          
        int count = 0; 
        for (int i = 0; i < n - 1; i++) 
            for (int j = i + 1; j < n; j++)
                if (coprime(arr[i], arr[j]))
                    count++;
                      
        return count;
    }
      
    // driver code
    public static void main(String args[])
                            throws IOException
    {
        int arr[] = { 1, 2, 5, 4, 8, 3, 9 };
        int n = arr.length; 
          
        System.out.println(numOfPairs(arr, n));
    }
}
  
/* This code is contributed by Nikita Tiwari.*/


Python3
# Python 3 program to
# find number of co
# prime pairs in array
  
# Recursive function to
# return gcd of a and b
def gcd(a, b):
      
    # Everything divides 0 
    if (a == 0 or b == 0):
        return False
      
      
    # base case
    if (a == b):
        return a
  
    # a is greater
    if (a > b):
        return gcd(a-b, b)
          
    return gcd(a, b-a)
      
# function to check 
# for gcd
def coprime(a, b) :
    return (gcd(a, b) == 1)
  
  
# Returns count of 
# co-prime pairs 
# present in array
def numOfPairs(arr, n) :
    count = 0
      
    for i in range(0, n-1) :
        for j in range(i+1, n) :
      
            if (coprime(arr[i], arr[j])) :
                count = count + 1
      
    return count
  
  
# driver code
arr = [1, 2, 5, 4, 8, 3, 9]
n = len(arr) 
  
print(numOfPairs(arr, n))
  
# This code is contributed by Nikita Tiwari.


C#
// C# program to find number of 
// co-prime pairs in array
using System;
  
class GFG {
      
    // Recursive function to
    // return gcd of a and b
    static int gcd(int a, int b)
    {
        // Everything divides 0 
        if (a == 0 || b == 0)
        return 0;
      
        // base case
        if (a == b)
            return a;
      
        // a is greater
        if (a > b)
            return gcd(a-b, b);
              
        return gcd(a, b-a);
    }
      
    // function to check for gcd
    static bool coprime(int a, int b)
    {
        return (gcd(a, b) == 1);
    }
      
    // Returns count of co-prime
    // pairs present in array
    static int numOfPairs(int []arr, int n) 
    { 
          
        int count = 0; 
        for (int i = 0; i < n - 1; i++) 
            for (int j = i + 1; j < n; j++)
                if (coprime(arr[i], arr[j]))
                    count++;
                      
        return count;
    }
      
    // driver code
    public static void Main()
    {
        int []arr = { 1, 2, 5, 4, 8, 3, 9 };
        int n = arr.Length; 
          
        Console.WriteLine(numOfPairs(arr, n));
    }
}
  
//This code is contributed by Anant Agarwal.


PHP
 $b)
        return __gcd($a - $b, $b);
    return __gcd($a, $b - $a);
}
  
// function to check for gcd
function coprime($a, $b)
{ 
    return (__gcd($a, $b) == 1);
}
  
// Recursive function to
// return gcd of a and b
function numOfPairs($arr, $n)
{ 
      
    $count = 0; 
    for ( $i = 0; $i < $n - 1; $i++) 
        for ($j = $i + 1; $j < $n; $j++)
            if (coprime($arr[$i], $arr[$j]))
                $count++;
                  
    return $count;
}
      
    // Driver code
    $arr = array(1, 2, 5, 4, 8, 3, 9);
    $n = count($arr); 
    echo numOfPairs($arr, $n);
      
// This code is contributed by anuj_67.
?>


输出:

17