一尘不染

查找出租车号码

algorithm

找到第一个n出租车号码。给定一个值n。我想找到前n个出租车号码。出租车是可以以多种方式表示为两个完美立方体之和的数字。

(请注意,存在两个 相关但不同的 集合,称为“出租车编号”:以 超过1种
方式
的2个立方 ****
总和
,和n
方式2个正整数的立方的总和的最小数
。这个问题是关于前一组,因为后一组仅知道前六个成员)

例如:

1^3 + 12^3 = 1729 = 9^3 + 10^3

我想对算法或如何解决该问题的C代码片段进行粗略的概述。

The first five of these are:

   I    J      K    L      Number 
---------------------------------
   1   12      9   10      1729       
   2   16      9   15      4104      
   2   24     18   20     13832       
  10   27     19   24     20683      
   4   32     18   30     32832

阅读 1871

收藏
2020-07-28

共1个答案

一尘不染

我想出了可以通过这种方式获得答案:

#include<stdio.h>

int main() {
    int n, i, count=0, j, k, int_count;
    printf("Enter the number of values needed: ");
    scanf("%d", &n);
    i = 1;
    while(count < n) {
       int_count = 0;
       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++;
          }
       }
       if(int_count == 2) {
          count++;
          printf("\nGot %d Hardy-Ramanujan numbers %d", count, i);  
       }
       i++;
    }
}

既然a^3+b^3 = na应该小于n^(1/3)

2020-07-28