Vind unieke paren zodat elk element kleiner dan of gelijk is aan N

Vind unieke paren zodat elk element kleiner dan of gelijk is aan N

Gegeven een geheel getal N, zoek en toon het aantal paren dat aan de volgende voorwaarden voldoet:

  • Het kwadraat van de afstand tussen deze twee getallen is gelijk aan de LCM van die twee getallen.
  • De GCD van die twee getallen is gelijk aan het product van twee opeenvolgende gehele getallen.
  • Beide getallen in het paar moeten kleiner dan of gelijk zijn aan N.

OPMERKING: Alleen die paren mogen worden weergegeven die tegelijkertijd aan beide bovenstaande voorwaarden voldoen en die getallen moeten kleiner zijn dan of gelijk zijn aan N.

Voorbeelden:   

  Input:   10   Output:   No. of pairs = 1 Pair no. 1 --> (2 4)   Input:   500   Output:   No. of pairs = 7 Pair no. 1 --> (2 4) Pair no. 2 --> (12 18) Pair no. 3 --> (36 48) Pair no. 4 --> (80 100) Pair no. 5 --> (150 180) Pair no. 6 --> (252 294) Pair no. 7 --> (392 448) 

Uitleg:
De onderstaande tabellen geven een duidelijk beeld van wat er te vinden is:  

Vind unieke paren zodat elk element kleiner dan of gelijk is aan N

Bovenstaande tabellen tonen GCD gevormd door het product van twee opeenvolgende getallen en de overeenkomstige veelvouden waarin UNIEK PAAR bestaat dat overeenkomt met elke waarde. Groene vermeldingen in elke rij vormen een uniek paar voor de overeenkomstige GCD.
Opmerking: In de bovenstaande tabellen  

  1. Voor 1e inschrijving GCD=2 1e en het 2e veelvoud van 2 vormen het Unieke Paar (2 4)
  2. Hetzelfde geldt voor de 2e inzending GCD=6. De 2e en de 3e veelvoud van 6 vormen het unieke paar (12 18)
  3. Op dezelfde manier verder gaand voor Z-de invoer, dat wil zeggen voor GCD = Z*(Z+1), is het duidelijk dat het unieke paar zal bestaan ​​uit het Z-de en (Z+1)-de veelvoud van GCD = Z*(Z+1). Nu is het Z-de veelvoud van GCD Z * (Z*(Z+1)) en het (Z+1)de veelvoud van GCD is (Z + 1) * (Z*(Z+1)).
  4. En omdat de limiet N is, moet het tweede getal in het unieke paar kleiner zijn dan of gelijk zijn aan N. Dus (Z + 1) * (Z*(Z+1)) <= N. Simplifying it further the desired relation is derived Z 3 + (2*Z 2 ) + Z <=N

Dit vormt een patroon en uit de wiskundige berekening wordt afgeleid dat voor een gegeven N het totale aantal van dergelijke unieke paren (bijvoorbeeld Z) een wiskundige relatie zal volgen die hieronder wordt weergegeven: 

Z 3  + (2*Z 2 ) + Z  <= N 


Hieronder vindt u de vereiste implementatie:  

C
   // C program for finding the required pairs   #include         #include         // Finding the number of unique pairs   int     No_Of_Pairs  (  int     N  )   {      int     i     =     1  ;      // Using the derived formula      while     ((  i     *     i     *     i  )     +     (  2     *     i     *     i  )     +     i      <=     N  )      i  ++  ;      return     (  i     -     1  );   }   // Printing the unique pairs   void     print_pairs  (  int     pairs  )   {      int     i     =     1       mul  ;      for     (  i     =     1  ;     i      <=     pairs  ;     i  ++  )     {      mul     =     i     *     (  i     +     1  );      printf  (  'Pair no. %d --> (%d %d)  n  '        i       (  mul     *     i  )     mul     *     (  i     +     1  ));      }   }   // Driver program to test above functions   int     main  ()   {      int     N     =     500       pairs       mul       i     =     1  ;      pairs     =     No_Of_Pairs  (  N  );      printf  (  'No. of pairs = %d   n  '       pairs  );      print_pairs  (  pairs  );      return     0  ;   }   
Java
   // Java program for finding   // the required pairs   import     java.io.*  ;   class   GFG      {          // Finding the number      // of unique pairs      static     int     No_Of_Pairs  (  int     N  )      {      int     i     =     1  ;          // Using the derived formula      while     ((  i     *     i     *     i  )     +         (  2     *     i     *     i  )     +     i      <=     N  )      i  ++  ;          return     (  i     -     1  );      }          // Printing the unique pairs      static     void     print_pairs  (  int     pairs  )      {      int     i     =     1       mul  ;      for     (  i     =     1  ;     i      <=     pairs  ;     i  ++  )      {      mul     =     i     *     (  i     +     1  );      System  .  out  .  println  (  'Pair no. '     +     i     +     ' --> ('     +         (  mul     *     i  )     +     ' '     +         mul     *     (  i     +     1  )     +     ')'  );         }      }          // Driver code      public     static     void     main     (  String  []     args  )      {      int     N     =     500       pairs       mul       i     =     1  ;      pairs     =     No_Of_Pairs  (  N  );          System  .  out  .  println  (  'No. of pairs = '     +     pairs  );      print_pairs  (  pairs  );      }   }   // This code is contributed by Mahadev.   
Python3
   # Python3 program for finding the required pairs   # Finding the number of unique pairs   def   No_Of_Pairs  (  N  ):   i   =   1  ;   # Using the derived formula   while   ((  i   *   i   *   i  )   +   (  2   *   i   *   i  )   +   i    <=   N  ):   i   +=   1  ;   return   (  i   -   1  );   # Printing the unique pairs   def   print_pairs  (  pairs  ):   i   =   1  ;   mul   =   0  ;   for   i   in   range  (  1     pairs   +   1  ):   mul   =   i   *   (  i   +   1  );   print  (  'Pair no.'      i     ' --> ('     (  mul   *   i  )   ' '     mul   *   (  i   +   1  )   ')'  );   # Driver Code   N   =   500  ;   i   =   1  ;   pairs   =   No_Of_Pairs  (  N  );   print  (  'No. of pairs = '     pairs  );   print_pairs  (  pairs  );   # This code is contributed   # by mits   
C#
   // C# program for finding   // the required pairs   using     System  ;   class     GFG      {       // Finding the number   // of unique pairs   static     int     No_Of_Pairs  (  int     N  )   {      int     i     =     1  ;      // Using the derived formula      while     ((  i     *     i     *     i  )     +         (  2     *     i     *     i  )     +     i      <=     N  )      i  ++  ;      return     (  i     -     1  );   }   // Printing the unique pairs   static     void     print_pairs  (  int     pairs  )   {      int     i     =     1       mul  ;      for     (  i     =     1  ;     i      <=     pairs  ;     i  ++  )      {      mul     =     i     *     (  i     +     1  );      Console  .  WriteLine  (  'Pair no. '     +     i     +     ' --> ('     +         (  mul     *     i  )     +     ' '     +         mul     *     (  i     +     1  )     +     ')'  );         }   }   // Driver code   static     void     Main  ()   {      int     N     =     500       pairs  ;      pairs     =     No_Of_Pairs  (  N  );      Console  .  WriteLine  (  'No. of pairs = '     +         pairs  );      print_pairs  (  pairs  );   }   }   // This code is contributed by mits   
PHP
      // PHP program for finding    // the required pairs   // Finding the number    // of unique pairs   function   No_Of_Pairs  (  $N  )   {   $i   =   1  ;   // Using the    // derived formula   while   ((  $i   *   $i   *   $i  )   +   (  2   *   $i   *   $i  )   +   $i    <=   $N  )   $i  ++  ;   return   (  $i   -   1  );   }   // Printing the unique pairs   function   print_pairs  (  $pairs  )   {   $i   =   1  ;   $mul  ;   for   (  $i   =   1  ;   $i    <=   $pairs  ;   $i  ++  )   {   $mul   =   $i   *   (  $i   +   1  );   echo   'Pair no.'      $i     ' --> ('      (  $mul   *   $i  )   ' '     $mul   *   (  $i   +   1  )  ')   n  '  ;   }   }   // Driver Code   $N   =   500  ;   $pairs  ;   $mul  ;   $i   =   1  ;   $pairs   =   No_Of_Pairs  (  $N  );   echo   'No. of pairs = '     $pairs      '   n  '  ;   print_pairs  (  $pairs  );   // This code is contributed   // by Akanksha Rai(Abby_akku)   ?>   
JavaScript
    <  script  >   // Javascript program for finding the    // required pairs   // Finding the number of unique pairs   function     No_Of_Pairs  (  N  )   {      let     i     =     1  ;      // Using the derived formula      while     ((  i     *     i     *     i  )     +      (  2     *     i     *     i  )     +     i      <=     N  )      i  ++  ;      return     (  i     -     1  );   }   // Printing the unique pairs   function     print_pairs  (  pairs  )   {      let     i     =     1       mul  ;      for  (  i     =     1  ;     i      <=     pairs  ;     i  ++  )         {      mul     =     i     *     (  i     +     1  );      document  .  write  (  'Pair no. '     +     i     +         ' --> ('     +     (  mul     *     i  )     +      ' '     +     mul     *     (  i     +     1  )     +         ')  
'
); } } // Driver code let N = 500 pairs mul i = 1 ; pairs = No_Of_Pairs ( N ); document . write ( 'No. of pairs = ' + pairs + '
'
); print_pairs ( pairs ); // This code is contributed by mohit kumar 29 < /script>
C++14
   // C++ code for the above approach:   #include          using     namespace     std  ;   // Finding the number of unique pairs   int     No_Of_Pairs  (  int     N  )   {      int     i     =     1  ;      // Using the derived formula      while     ((  i     *     i     *     i  )     +     (  2     *     i     *     i  )     +     i      <=     N  )      i  ++  ;      return     (  i     -     1  );   }   // Printing the unique pairs   void     print_pairs  (  int     pairs  )   {      int     i     =     1       mul  ;      for     (  i     =     1  ;     i      <=     pairs  ;     i  ++  )     {      mul     =     i     *     (  i     +     1  );      cout      < <     'Pair no. '   < <     i      < <  ' --> ('      < <     (  mul     *     i  )      < <     ' '   < <     mul     *     (  i     +     1  )      < <     ')'      < <  endl  ;;      }   }   // Driver Code   int     main  ()   {      int     N     =     500       pairs       mul       i     =     1  ;      pairs     =     No_Of_Pairs  (  N  );      cout      < <     'No. of pairs = '      < <     pairs      < <     endl  ;      print_pairs  (  pairs  );      return     0  ;   }   

Uitgang:  
No. of pairs = 7 Pair no. 1 --> (2 4) Pair no. 2 --> (12 18) Pair no. 3 --> (36 48) Pair no. 4 --> (80 100) Pair no. 5 --> (150 180) Pair no. 6 --> (252 294) Pair no. 7 --> (392 448) 

 

Tijdcomplexiteit : OP 1/3 )
Hulpruimte : O(1)