Given an integer N, the task is to find a sequence of N distinct positive integers such that the Greatest Common Divisor of the sequence is 1 and GCD of all possible pairs of elements is greater than 1.
Input: N = 4
Output: 84 60 105 70
Explanation: The GCD(84, 60, 105, 70) is 1 and the GCD of all possible pair of elements i.e, {(84, 60), (84, 105), (84, 70), (60, 105), (60, 70), (105, 70)} is greater than 1.Input: N = 3
Output: 6 10 15
Approach: This problem can be solved by using the Set Data Structure. The idea is to choose three integers of the form (a*b, b*c, c*a), as GCD of the three is 1 and pairwise GCD of the three is always greater than 1. Further, simply add the multiples of the three integers until the sequence contains the required number of integers. A set of integers of the form (a*b, b*c, c*a) is (6, 10, 15). Therefore, add multiples of 6, 10, and 15 to the sequence and print the required number of integers.
Below is the implementation of the above approach:
// C++ program for above approach #include <bits/stdc++.h> using namespace std;
// Function to find the sequence of // distinct integers with GCD equal // to 1 and every pair has GCD > 1. void findSequence( int N)
{ // Special case
if (N == 3) {
cout << "6 10 15" << endl;
return ;
}
// Set to avoid duplicates
set< int > s;
s.insert(6);
s.insert(10);
s.insert(15);
// Add multiples of 6
for ( int i = 12; i <= 10000; i += 6)
s.insert(i);
// Add multiples of 10
for ( int i = 20; i <= 10000; i += 10)
s.insert(i);
// Add multiples of 15
for ( int i = 30; i <= 10000; i += 15)
s.insert(i);
int cnt = 0;
// Print first N numbers of set
for ( int x : s) {
cout << x << " " ;
cnt++;
if (cnt == N) {
break ;
}
}
} // Driver Code int main()
{ int N = 3;
findSequence(N);
return 0;
} |
// Java program for above approach import java.util.*;
class GFG{
// Function to find the sequence of // distinct integers with GCD equal // to 1 and every pair has GCD > 1. static void findSequence( int N)
{ // Special case
if (N == 3 )
{
System.out.println( "6 10 15" );
return ;
}
// Set to avoid duplicates
Set<Integer> s = new HashSet<Integer>();
s.add( 6 );
s.add( 10 );
s.add( 15 );
// Add multiples of 6
for ( int i = 12 ; i <= 10000 ; i += 6 )
s.add(i);
// Add multiples of 10
for ( int i = 20 ; i <= 10000 ; i += 10 )
s.add(i);
// Add multiples of 15
for ( int i = 30 ; i <= 10000 ; i += 15 )
s.add(i);
int cnt = 0 ;
// Print first N numbers of set
for (Integer x : s)
{
System.out.print(x + " " );
cnt++;
if (cnt == N)
{
break ;
}
}
} // Driver Code public static void main(String[] args)
{ int N = 3 ;
findSequence(N);
} } // This code is contributed by Potta Lokesh |
# python program for above approach # Function to find the sequence of # distinct integers with GCD equal # to 1 and every pair has GCD > 1. def findSequence(N):
# Special case
if (N = = 3 ):
print ( "6 10 15" )
return
# Set to avoid duplicates
s = set ()
s.add( 6 )
s.add( 10 )
s.add( 15 )
# Add multiples of 6
for i in range ( 12 , 10001 , 6 ):
s.add(i)
# Add multiples of 10
for i in range ( 20 , 10001 , 10 ):
s.add(i)
# Add multiples of 15
for i in range ( 30 , 10001 , 15 ):
s.add(i)
cnt = 0
# Print first N numbers of set
for x in s:
print (x, end = " " )
cnt + = 1
if (cnt = = N):
break
# Driver Code if __name__ = = "__main__" :
N = 3
findSequence(N)
# This code is contributed by rakeshsahni |
// C# program for above approach using System;
using System.Collections.Generic;
class GFG {
// Function to find the sequence of
// distinct integers with GCD equal
// to 1 and every pair has GCD > 1.
static void findSequence( int N)
{
// Special case
if (N == 3) {
Console.WriteLine( "6 10 15" );
return ;
}
// Set to avoid duplicates
HashSet< int > s = new HashSet< int >();
s.Add(6);
s.Add(10);
s.Add(15);
// Add multiples of 6
for ( int i = 12; i <= 10000; i += 6)
s.Add(i);
// Add multiples of 10
for ( int i = 20; i <= 10000; i += 10)
s.Add(i);
// Add multiples of 15
for ( int i = 30; i <= 10000; i += 15)
s.Add(i);
int cnt = 0;
// Print first N numbers of set
foreach ( int x in s)
{
Console.Write(x + " " );
cnt++;
if (cnt == N) {
break ;
}
}
}
// Driver Code
public static void Main(String[] args)
{
int N = 3;
findSequence(N);
}
} // This code is contributed by ukasp. |
<script> // Javascript program for above approach // Function to find the sequence of // distinct integers with GCD equal // to 1 and every pair has GCD > 1. function findSequence(N)
{ // Special case
if (N == 3) {
document.write( "6 10 15" );
return ;
}
// Set to avoid duplicates
let s = new Set();
s.add(6);
s.add(10);
s.add(15);
// Add multiples of 6
for (let i = 12; i <= 10000; i += 6)
s.add(i);
// Add multiples of 10
for (let i = 20; i <= 10000; i += 10)
s.add(i);
// Add multiples of 15
for (let i = 30; i <= 10000; i += 15)
s.add(i);
let cnt = 0;
// Print first N numbers of set
for (x of s) {
document.write(x + " " );
cnt++;
if (cnt == N) {
break ;
}
}
} // Driver Code let N = 3; findSequence(N); // This code is contributed by gfgking. </script> |
6 10 15
Time Complexity: O(N*log N)
Auxiliary Space: O(N)