Taxicab Numbers - GeeksforGeeks

20 Apr, 2021
The nth Taxicab number Taxicab(n), also called the n-th Hardy-Ramanujan number, is defined as the smallest number that can be expressed as a sum of two positive cube numbers in n distinct ways. The most famous taxicab number is 1729 = Taxicab(2) = (1 ^ 3) + (12 ^ 3) = (9 ^ 3) + (10 ^ 3).Given a number N, print first N Taxicab(2) numbers.Examples: 
Input: N = 1
Output: 1729
Explanation: 1729 = (1 ^ 3) + (12 ^ 3) 
                  = (9 ^ 3) + (10 ^ 3)

Input: N = 2
Output: 1729 4104
Explanation: 1729 = (1 ^ 3) + (12 ^ 3) 
                   = (9 ^ 3) + (10 ^ 3)
              4104 = (16 ^ 3) + (2 ^ 3) 
                   = (15 ^ 3) + (9 ^ 3)
We try all numbers one by one and check if it is a taxicab number. To check if a number is Taxicab, we use two nested loops: In outer loop, we calculate cube root of a number. In inner loop, we check if there is a cube-root that yield the result.  
C++
Java
Python3
C#
PHP
Javascript
// C++ implementation to print first N Taxicab(2)// numbers :#include<bits/stdc++.h>using namespace std; void printTaxicab2(int N){    // Starting from 1, check every number if    // it is Taxicab until count reaches N.    int i = 1, count = 0;    while (count < N)    {       int int_count = 0;        // Try all possible pairs (j, k) whose cube       // sums can be i.       for (int j = 1; j <= pow(i, 1.0/3); j++)          for (int k = j + 1; k <= pow(i, 1.0/3); k++)              if (j*j*j + k*k*k == i)                  int_count++;               // Taxicab(2) found       if (int_count == 2)       {          count++;          cout << count << " " << i << endl;        }        i++;    }} // Driver codeint main(){    int N = 5;    printTaxicab2(N);      return 0;}
// JAVA Code for Taxicab Numbersimport java.util.*; class GFG {         public static void printTaxicab2(int N)    {        // Starting from 1, check every number if        // it is Taxicab until count reaches N.        int i = 1, count = 0;        while (count < N)        {           int int_count = 0;                 // Try all possible pairs (j, k) whose            // cube sums can be i.           for (int j = 1; j <= Math.pow(i, 1.0/3); j++)              for (int k = j + 1; k <= Math.pow(i, 1.0/3);                                                   k++)                  if (j * j * j + k * k * k == i)                      int_count++;                        // Taxicab(2) found           if (int_count == 2)           {              count++;              System.out.println(count + " " + i);            }                 i++;        }    }         /* Driver program to test above function */    public static void main(String[] args)    {        int N = 5;        printTaxicab2(N);             }}   // This code is contributed by Arnav Kr. Mandal.
# Python3 implementation to print# first N Taxicab(2) numbersimport math def printTaxicab2(N):     # Starting from 1, check every number if    # it is Taxicab until count reaches N.    i, count = 1, 0    while (count < N):             int_count = 0         # Try all possible pairs (j, k)        # whose cube sums can be i.        for j in range(1, math.ceil(\                   pow(i, 1.0 / 3)) + 1):                         for k in range(j + 1,\              math.ceil(pow(i, 1.0 / 3)) + 1):                if (j * j * j + k * k * k == i):                    int_count += 1                 # Taxicab(2) found        if (int_count == 2):                     count += 1            print(count, " ", i)         i += 1     # Driver codeN = 5printTaxicab2(N) # This code is contributed by Anant Agarwal.
// C# Code for Taxicab Numbersusing System; class GFG {         public static void printTaxicab2(int N)    {        // Starting from 1, check every number if        // it is Taxicab until count reaches N.        int i = 1, count = 0;        while (count < N)        {            int int_count = 0;                     // Try all possible pairs (j, k) whose            // cube sums can be i.            for (int j = 1; j <= Math.Pow(i, 1.0/3); j++)                for (int k = j + 1; k <= Math.Pow(i, 1.0/3);                                                    k++)                    if (j * j * j + k * k * k == i)                        int_count++;                             // Taxicab(2) found            if (int_count == 2)            {                count++;                Console.WriteLine(count + " " + i);            }                     i++;        }    }         // Driver program    public static void Main()    {        int N = 5;        printTaxicab2(N);             }} // This code is contributed by vt_m.
<?php// PHP implementation to print first// N Taxicab(2) numbers : function printTaxicab2($N){         // Starting from 1, check every    // number if it is Taxicab until    // count reaches N.    $i = 1; $count = 0;    while ($count < $N)    {        $int_count = 0;             // Try all possible pairs (j, k)        // whose cube sums can be i.        for ($j = 1; $j <= pow($i, 1.0/3); $j++)            for ( $k = $j + 1; $k <= pow($i, 1.0/3); $k++)                if ($j * $j * $j + $k * $k * $k == $i)                    $int_count++;                     // Taxicab(2) found        if ($int_count == 2)        {            $count++;            echo $count, " ", $i, "\n";        }             $i++;    }} // Driver code     $N = 5;    printTaxicab2($N); // This code is contributed by ajit.?>
<script>// Javascript implementation to print first// N Taxicab(2) numbers :function printTaxicab2(N){         // Starting from 1, check every    // number if it is Taxicab until    // count reaches N.    let i = 1; count = 0;    while (count < N)    {        let int_count = 0;             // Try all possible pairs (j, k)        // whose cube sums can be i.        for (let j = 1; j <= Math.pow(i, 1.0/3); j++)            for (let k = j + 1; k <= Math.pow(i, 1.0/3); k++)                if (j * j * j + k * k * k == i)                    int_count++;                     // Taxicab(2) found        if (int_count == 2)        {            count++;            document.write(count + " " + i + "<br>");        }             i++;    }} // Driver code    let N = 5;    printTaxicab2(N); // This code is contributed by _saurabh_jaiswal.</script>
1 1729
2 4104
3 13832
4 20683
5 32832
This article is contributed by Rohit Thapliyal. 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. 
jit_t
gowtham_yuvaraj
pankajkmr1
_saurabh_jaiswal
number-theory
series
Mathematical
number-theory
Mathematical
series
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Program to print prime numbers from 1 to N.
Segment Tree | Set 1 (Sum of given range)
Count all possible paths from top left to bottom right of a mXn matrix
Modular multiplicative inverse
Program to multiply two matrices
Fizz Buzz Implementation
Check if a number is Palindrome
Count ways to reach the n'th stair
Merge two sorted arrays with O(1) extra space
Min Cost Path | DP-6