📜  打印N行的4个数字,使4个数字中的每对都有一个GCD K

📅  最后修改于: 2021-04-23 20:39:32             🧑  作者: Mango

给定N和K,任务是打印N行,其中每行包含4个数字,以使这4个数字中的每个数字都具有GCD K,并且应最小化N * 4中使用的最大数字。
注意:如果有多个输出,请打印任何一个。
例子:

方法:第一个观察结果是,如果我们可以解决K = 1的给定问题,则可以通过简单地将答案乘以K来解决GCD K的问题。我们知道,任何三个连续的奇数配对时总是GCD 1 ,因此可以轻松获得每行三个数字。因此,这些行将如下所示:

1 3 5 _ 
7 9 11 _ 
13 15 17 _  
.
.
.

不能始终插入偶数,因为在第三行中插入6将使GCD(6,9)等于3。因此,可以插入的最佳数字是每行的前两个关闭数字之间的数字。因此,模式如下所示:

1 2 3 5  
7 8 9 11  
13 14 15 17  
.
.
.

要获得给定的GCD K,可以轻松地将K乘以获得的数字。因此,对于第i行:

  1. 第一个数字是k *(6 * i + 1)
  2. 第二个数字将是k *(6 * i + 1)
  3. 第三个数字是k *(6 * i + 3)
  4. 第四个数字是k *(6 * i + 5)

N * 4个数中的最大数为k *(6 * i – 1)
下面是上述方法的实现。

C++
// C++ implementation of the
// above approach
 
#include 
using namespace std;
 
// Function to print N lines
void printLines(int n, int k)
{
    // Iterate N times to print N lines
    for (int i = 0; i < n; i++) {
        cout << k * (6 * i + 1) << " "
             << k * (6 * i + 2) << " "
             << k * (6 * i + 3) << " "
             << k * (6 * i + 5) << endl;
    }
}
// Driver Code
int main()
{
    int n = 2, k = 2;
    printLines(n, k);
    return 0;
}


Java
// Java implementation of the
// above approach
 
import java.util.*;
import java.lang.*;
import java.io.*;
 
class GFG
{
// Function to print N lines
static void printLines(int n, int k)
{
    // Iterate N times to print N lines
    for (int i = 0; i < n; i++) {
        System.out.println ( k * (6 * i + 1) + " "
            + k * (6 * i + 2) + " "
            + k * (6 * i + 3) + " "
            + k * (6 * i + 5) );
    }
}
// Driver Code
public static void main(String args[])
{
    int n = 2, k = 2;
    printLines(n, k);
}
}


Python 3
# Python implementation of the
# above approach.
 
# Function to print N lines
def printLines(n, k) :
 
    # Iterate N times to print N lines
    for i in range(n) :
        print( k * (6 * i + 1),
                k * (6 * i + 2),
               k * (6 * i + 3),
               k * (6 * i + 5))
         
# Driver code    
if __name__ == "__main__" :
 
    n, k = 2, 2
    printLines(n, k)
 
# This code is contributed by ANKITRAI1


PHP


C#
// C# implementation of the
// above approach
using System;
 
class GFG
{
// Function to print N lines
static void printLines(int n, int k)
{
    // Iterate N times to print N lines
    for (int i = 0; i < n; i++)
    {
        Console.WriteLine ( k * (6 * i + 1) + " " +
                            k * (6 * i + 2) + " " +
                            k * (6 * i + 3) + " " +
                            k * (6 * i + 5) );
    }
}
 
// Driver Code
public static void Main()
{
    int n = 2, k = 2;
    printLines(n, k);
}
}
 
// This code is contributed
// by Akanksha Rai(Abby_akku)


Javascript


输出:
2 4 6 10
14 16 18 22

时间复杂度: O(4 * N)
辅助空间: O(1)