第几个幸运数

package javaC9jie;

import java.util.LinkedHashSet;
import java.util.TreeSet;

public class TextD {
    final static long Max=59084709587505L;
    public static void main(String[] args) {
        //        D、第几个幸运数
        //        到x星球旅行的游客都被发给一个整数,作为游客编号。x星的国王有个怪癖,他只喜欢数字3,5和7。
        //        国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。
        //        我们来看前10个幸运数字是:3 5 7 9 15 21 25 27 35 45
        //        因而第11个幸运数字是:49
        //        小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。
        //        请你帮小明计算一下,59084709587505是第几个幸运数字。

        //TreeSet是有序(自动排序),不能有重复的元素
//        TreeSet set=new TreeSet();
//        set.add(1);
//        set.add(10);
//        set.add(2);
//        set.add(0);
//        set.add(10);
//        System.out.println(set.pollFirst());
//        System.out.println(set.pollFirst());
//        System.out.println(set);
        
        //我们来看前10个幸运数字是:3 5 7 9 15 21 25 27 35 45
        //        因而第11个幸运数字是:49
//        System.out.println("TreeSet集合的长度:"+set.size());
        int[] a = { 3, 5, 7 };
        long Max=59084709587505L;
        long start=1;
        TreeSet<Long> set=new TreeSet<Long>();
        while (true) {
            for (int i = 0; i < a.length; i++) {
                long tt=start*a[i]; //1 3 5 7 9
                if (tt<=Max) {
                    set.add(tt);//3 5 7  9 15 21 25 27 35 45 49 63... 59084709587505L
                }
                
            }
            //set集合中,找到一个>start的最小数字
            start=set.higher(start);//3 5 7 9.....59084709587505L
            if (start>=Max) {
                break;
            }
        }
        System.out.println(set.size());
    }

}
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值