找到第一个n出租车号码。给定值n。我想找到第一批n个出租车号码。
出租车是一个数量,可以表示为两个完美立方体的总和在一个以上的方式。
(注意,有两个相关但不同的集合称为
“出租车号码”:sums of 2 cubes in more than 1 waythe smallest numbers that are the sum of 2 positive integral cubes in n ways。这个问题是关于前一组的,
因为后一组只知道前六个成员)
例如:

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

最佳答案

下面是用于打印N RAMANUUN1数字的更好的Java代码,因为它具有更少的时间复杂度。因为,它只有一个for循环。

import java.util.*;
public class SolutionRamanujan
{
    public static void main(String args[] ) throws Exception
    {
        SolutionRamanujan s=new SolutionRamanujan();
        Scanner scan=new Scanner(System.in);
        int n=scan.nextInt();
        int i=0,k=1;
        while(i<n){
            if(s.checkRamanujan(k))
            {
                i=i+1;
                System.out.println(i+" th ramanujan number is "+k);
            }
            k++;
        }
        scan.close();
    }
    //checking whether a number is ramanujan number
    public boolean checkRamanujan(int a)
    {
        int count=0;
        int cbrt=(int)Math.cbrt(a);
        //numbers only below and equal to cube th root of number
        for(int i=1;i<=cbrt;i++)
        {
            int difference=a-(i*i*i);
            int a1=(int) Math.cbrt(difference);                //checking whether the difference is perfect cube

            if(a1==Math.cbrt(difference)){
                count=count+1;
            }
            if(count>2){            //checking if two such pairs exists i.e. (a*a*a)+(b*b*b)=(c*c*c)+(d*d*d)=number
                return true;
            }
        }
        return false;
    }
}

09-26 06:22