Co-prime pair with given sum minimum difference

Co-prime or mutually prime pair are those pair of numbers whose GCD is 1. Given a number n represent the number as the sum of a Co-prime pair ( A, B) such that A – B is minimum .

Examples :

Input : 12 
Output : 5 7
Possible co-prime pairs are (5, 7), (1, 11)
but difference between 5 and 7 is minimum

Input : 13
Output : 6 7
Possible co-prime pairs are (6, 7), (5, 8),
(4, 9), (3, 10), (2, 11) and (1, 12) 
but difference between 6 and 7  is minimum

A simple solution is to iterate through all number from 1 to n-1. For every number x, check if n – x and x are co-primes. If yes, then update the result if difference between these two is less than minimum difference so far.

An efficient solution is based on the fact that the numbers with minimum difference should be close to n/2. We loop from n/2 to 1. Check every possible pair and when first possible Co-prime pair is found display it and stop the loop.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to represent a number  
// as sum of a co-prime pair such that 
// difference between them is minimum
#include <bits/stdc++.h>
using namespace std;
  
// function to check if pair
// is co-prime or not
bool coprime(int a, int b)
{
    return (__gcd(a, b) == 1);
}
  
// function to find and print 
// co-prime pair
void pairSum(int n){
      
    int mid = n / 2;
  
    for (int i = mid; i >= 1; i--) {
        if (coprime(i, n - i) == 1) {
            cout << i << " " << n - i;
            break;
        }
    }
}
  
// driver code
int main()
{
    int n = 11;
    pairSum(n);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to represent a 
// number as sum of a co-prime 
// pair such that difference 
// between them is minimum
class GFG 
{
    static int __gcd(int a, int b)
    {
        return b == 0 ? a : 
           __gcd(b, a % b);
    }
      
    // function to check if pair
    // is co-prime or not
    static boolean coprime(int a, int b)
    {
        return (__gcd(a, b) == 1);
    }
      
    // function to find and 
    // print co-prime pair
    static void pairSum(int n)
    {
        int mid = n / 2;
      
        for (int i = mid; i >= 1; i--)
        {
            if (coprime(i, n - i) == true)
            {
                System.out.print( i + " "
                                  (n - i));
                break;
            }
        }
    }
      
    // Driver Code
    public static void main(String args[]) 
    {
        int n = 11;
        pairSum(n);
          
    }
}
  
// This code is contributed by Sam007

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to represent 
# a number as sum of a co-prime 
# pair such that difference 
# between them is minimum
import math
  
# function to check if pair
# is co-prime or not
def coprime(a, b):
    return 1 if(math.gcd(a, b) == 1) else 0;
  
# function to 
# find and print 
# co-prime pair
def pairSum(n):
    mid = int(n / 2);
    i = mid;
    while(i >= 1):
        if (coprime(i, n - i) == 1):
            print(i, n - i);
            break;
        i = i - 1;
  
# Driver code
n = 11;
pairSum(n);
  
# This code is contributed
# by mits

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to represent a number 
// as sum of a co-prime pair such that 
// difference between them is minimum
using System;
  
class GFG {
  
    static int __gcd(int a, int b)
    {
        return b == 0 ? a : __gcd(b, a % b);
    }
      
    // function to check if pair
    // is co-prime or not
    static bool coprime(int a, int b)
    {
        return (__gcd(a, b) == 1);
    }
      
    // function to find and print 
    // co-prime pair
    static void pairSum(int n)
    {
        int mid = n / 2;
      
        for (int i = mid; i >= 1; i--)
        {
            if (coprime(i, n - i) == true)
            {
                Console.Write( i + " " 
                               + (n - i));
                break;
            }
        }
    }
      
    // Driver code
    public static void Main()
    {
        int n = 11;
        pairSum(n);
    }
}
  
// This code is contributed by Sam007

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to represent 
// a number as sum of a 
// co-prime pair such that 
// difference between them 
// is minimum
  
function gcd($num1, $num2
{
      
/* finds the greatest common
factor between two numbers */
while ($num2 != 0)
{
    $t = $num1 % $num2;
    $num1 = $num2;
    $num2 = $t;
}
return $num1;
}
  
// function to check if pair
// is co-prime or not
function coprime($a, $b)
{
    if(gcd($a, $b) == 1)
    return 1;
    else
    return 0;
}
  
// function to find and 
// print co-prime pair
function pairSum($n)
{
    $mid = (int)(($n / 2));
  
    for ($i = $mid; $i >= 1; $i--) 
    {
        if (coprime($i, $n - $i) == 1)
        {
            echo $i . " " . ($n - $i);
            break;
        }
    }
}
  
// Driver code
$n = 11;
pairSum($n);
  
// This code is contributed
// by mits
?>

chevron_right



Output :

5 6

This article is contributed by Dibyendu Roy Chaudhuri. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up

Improved By : Sam007, Mithun Kumar