java 大数(hdu4002)

/*
f(1)=2
f(2)=2*3
f(3)=2*3*5
f(4)=2*3*5*7
求小于N 的最大f(x)的值
利用java写大数
*/
public class Main{


    static String s[] = {
        "2", "3", "5", "7", "11", "13", "17", "19", "23", "29",
        "31", "37", "41", "43", "47", "53", "59", "61", "67", "71",
        "73", "79", "83", "89", "97", "101", "103", "107", "109", "113",
        "127", "131", "137", "139", "149", "151", "157", "163", "167", "173",
        "179", "181", "191", "193", "197", "199", "211", "223", "227", "229",
        "233", "239", "241", "251", "257", "263", "269", "271", "277", "281",
        "283", "293", "307", "311", "313", "317", "331", "337", "347", "349",
        "353", "359", "367", "373", "379", "383", "389", "397", "401", "409",
        "419", "421", "431", "433", "439", "443", "449", "457", "461", "463",
        "467", "479", "487", "491", "499", "503", "509", "521", "523", "541",
        "547"
    };
    static BigInteger[] b=new BigInteger[102];
    int sn = 100;
    static void init()
    {
        b[0]=BigInteger.ONE;
        for(int i=1;i<=100;i++)
        {
            b[i]=b[i-1].multiply(new BigInteger(s[i-1]));
        }
    }

    public static void main(String[] args) {
        int t;
        Scanner sc=new Scanner(System.in);
        t=sc.nextInt();
        init();
        while(t>0)
        {
            t--;
            BigInteger n=sc.nextBigInteger();
            
            int i;
            for(i=0;i<100;i++)
            {
                if(n.compareTo(b[i])<0)
                    break;
            }
            System.out.println(b[i-1]);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值