📜  将所有互素数从1到N分组

📅  最后修改于: 2021-04-26 08:11:10             🧑  作者: Mango

给定整数N ,任务是对数字进行分组,以使每个组互质互素,而总分组最小。
例子:

方法:在这个问题上的关键观察是两个连续的数字总是互质的。那就是GCD(a,a + 1)=1。另一个重要的观察结果是在一组中不能列出偶数。因为它们将导致2的最大公约数。因此,每个连续的偶数和奇数可以分组为一组,而1可以在任何组中,因为1的最大公约数始终为1。

下面是上述方法的实现:

C++
// C++ implementation to group 
// mutually coprime numbers into 
// one group with minimum group possible 
#include
using namespace std;
  
// Function to group the mutually 
// co-prime numbers into one group 
void mutually_coprime(int n)
{
    if (n <= 3)
    {
          
        // Loop for the numbers less 
        // than the 4 
        for(int j = 1; j <= n; j++)
        {
            cout << j << " ";
        }
        cout << "\n";
    }
    else
    {
          
        // Integers 1, 2 and 3 can be 
        // grouped into one group 
        cout << "1 2 3\n";
          
        for(int j = 4; j < n; j += 2)
        {
              
            // Consecutive even and 
            // odd numbers 
            cout << j << " " << j + 1 << "\n";
        }
        if(n % 2 == 0)
            cout << n << "\n";
    }
}
  
// Driver Code         
int main()
{
    int n = 9;
      
    // Function call 
    mutually_coprime(n);
}
  
// This code is contributed by yatinagg


Java
// Java implementation to group
// mutually coprime numbers into 
// one group with minimum group possible
class GFG{
      
// Function to group the mutually
// co-prime numbers into one group
static void mutually_coprime(int n)
{
    if (n <= 3)
    {
          
        // Loop for the numbers less
        // than the 4
        for(int j = 1; j < n + 1; j++)
           System.out.print(j + " ");
        System.out.println();
    } 
    else
    {
          
        // Integers 1, 2 and 3 can be
        // grouped into one group
        System.out.println("1 2 3");
        for(int j = 4; j < n; j += 2)
        {
  
           // Consecutive even and
           // odd numbers
           System.out.println(j + " " + (j + 1));
           if (n % 2 == 0)
           System.out.println(n);
        }
    }
}
  
// Driver Code
public static void main(String[] args)
{
    int n = 9;
  
    // Function Call
    mutually_coprime(n);
}
}
  
// This code is contributed by sapnasingh4991


Python3
# Python3 implementation to group
# mutually coprime numbers into 
# one group with minimum group possible
  
# Function to group the mutually
# co-prime numbers into one group
def mutually_coprime (n):    
    if ( n <= 3):
        # Loop for the numbers less 
        # than the 4 
        for j in range (1, n + 1):
            print (j, end =" ")
        print ()
    else:
        # Integers 1, 2 and 3 can be 
        # grouped into one group
        print (1, 2, 3)
        for j in range ( 4, n, 2 ):
              
            # Consecutive even and 
            # odd numbers
            print (j, ( j + 1 ))
        if(n % 2 == 0):         
            print (n)
  
# Driver Code            
if __name__ == "__main__":
    n = 9
      
    # Function Call
    mutually_coprime (n)


C#
// C# implementation to group
// mutually coprime numbers into 
// one group with minimum group possible
using System;
  
class GFG{
      
// Function to group the mutually
// co-prime numbers into one group
static void mutually_coprime(int n)
{
    if (n <= 3)
    {
          
        // Loop for the numbers less
        // than the 4
        for(int j = 1; j < n + 1; j++)
           Console.Write(j + " ");
             
        Console.WriteLine();
    } 
    else
    {
          
        // ints 1, 2 and 3 can be
        // grouped into one group
        Console.WriteLine("1 2 3");
        for(int j = 4; j < n; j += 2)
        {
           // Consecutive even and
           // odd numbers
           Console.WriteLine(j + " " + (j + 1));
              
           if (n % 2 == 0)
               Console.WriteLine(n);
        }
    }
}
  
// Driver Code
public static void Main(String[] args)
{
    int n = 9;
  
    // Function Call
    mutually_coprime(n);
}
}
// This code is contributed by sapnasingh4991


输出:
1 2 3
4 5
6 7
8 9