一些有趣的数学问题java编程实现

一、斐波那契数列
//斐波那契数列
    //该数列从第三个数字开始,每个数字都是前两个数字的和;
    public static long[] fibonacci(long n1, long n2, int n)
    {
        long[] l = new long[n];
        l[0] = n1;
        l[1] = n2;
        for(int i=2;i        {
            l[i] = l[i-2] + l[i-1];
        }
        return l;
    }
二、吸血鬼数字
//吸血鬼数字;吸血鬼数字是这样一类数字,该数字可以由两个数字乘积得到,
    //条件1:吸血鬼数字必须是偶数位;
    //条件2:两个乘数的位数都是吸血鬼数字的位数的一半;
    //条件3:吸血鬼数字的所有位的数字构成的集合完全与两个乘数的所有位数字构成的集合相同;
    //条件4:吸血鬼数字不能以00结尾;
    public static long[] bloodsuckerfiger(int n)
    {
        if(n%2 > 0)
        {
            return new long[0];
        }
        List list = new ArrayList();
        long min = 1;
        for(int i=0;i        {
            min *= 10;
        }
        long max = 1;
        for(int i=0;i        {
            max *= 10;
        }
        int m = n/2;
        long min1 = 1;
        for(int i=0;i        {
            min1 *= 10;
        }
        long max1 =1;
        for(int i=0;i        {
            max1 *= 10;
        }
        for(long l=min1;l>=min1&&l        {
            String s1 = Long.valueOf(l).toString();
            List l1 = new ArrayList();
            for(int i =0;i            {
                l1.add(s1.substring(i, i+1));
            }
            for(long g=max1/2;g>=max1/2&&g            {
                String s2 = Long.valueOf(g).toString();
                List l2 = new ArrayList();
                for(int i=0;i                {
                    l2.add(s2.substring(i, i+1));
                }
                long r = l*g;
                String s3 = Long.valueOf(r).toString();
                List l3 = new ArrayList();
                for(int i=0;i                {
                    l3.add(s3.substring(i, i+1));
                }
                if(r%100>0&&r>min&&r                {
                    List ll = new ArrayList();
                    ll.addAll(l1);
                    ll.addAll(l2);
                    List ll1 = new ArrayList();
                    List ll2 = new ArrayList();
                    ll1.addAll(ll);
                    ll2.addAll(l3);
                    for(String ss1:ll)
                    {
                        for(String ss2:l3)
                        {
                            if(ss1.equals(ss2))
                            {
                                ll1.remove(ss1);
                                ll2.remove(ss2);
                                break;
                            }
                        }
                    }
                    if(ll1.size() == 0 && ll2.size() == 0)
                    {
                        System.out.println(l+" "+g+" "+r);
                        list.add(r);
                    }
                }
            }
        }
        long[] result = new long[list.size()];
        for(int i=0;i        {
            result[i] = list.get(i);
        }
        return result;
    }

你可能感兴趣的:(一些有趣的数学问题java编程实现)