标签: hardy-ramanujan

寻找出租车号码

找到第一个n出租车数字.给定一个价值n.我想找到前n个出租车编号.出租车是一个数字,可以用不止一种方式表示为两个完美立方体的总和.

(请注意,有两个相关但不同的被称为"的士数"集:2个立方体金额超过1点 的方式,并且是2个的正积分立方体的总和最小号n 的方式.这个问题是关于前一组,因为后一组只有前六名成员知道)

例如:

1^3 + 12^3 = 1729 = 9^3 + 10^3
Run Code Online (Sandbox Code Playgroud)

我想粗略概述算法或如何解决问题的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    
Run Code Online (Sandbox Code Playgroud)

c algorithm numbers hardy-ramanujan

14
推荐指数
2
解决办法
1万
查看次数

使Hardy-Ramanujan nth数字查找器更有效率

我试图制作一个算法来找到第n个Hardy-Ramanujan数(一个可以多个方式表示为2个立方体之和的数字).除了我基本上用另一个立方体检查每个立方体以查看它是否等于另外两个立方体的总和.有关如何提高效率的任何提示?我有点难过.

public static long nthHardyNumber(int n) {

    PriorityQueue<Long> sums = new PriorityQueue<Long>();
    PriorityQueue<Long> hardyNums = new PriorityQueue<Long>();
    int limit = 12;
    long lastNum = 0;

    //Get the first hardy number
    for(int i=1;i<=12;i++){
        for(int j = i; j <=12;j++){
            long temp = i*i*i + j*j*j;
            if(sums.contains(temp)){
                if(!hardyNums.contains(temp))
                    hardyNums.offer(temp);
                if(temp > lastNum)
                    lastNum = temp;
            }
            else
                sums.offer(temp);
        }
    }
    limit++;

    //Find n hardy numbers
    while(hardyNums.size()<n){
        for(int i = 1; i <= limit; i++){
            long temp = i*i*i + limit*limit*limit;
            if(sums.contains(temp)){
                if(!hardyNums.contains(temp)) …
Run Code Online (Sandbox Code Playgroud)

java math performance hardy-ramanujan

4
推荐指数
1
解决办法
1499
查看次数

标签 统计

hardy-ramanujan ×2

algorithm ×1

c ×1

java ×1

math ×1

numbers ×1

performance ×1