20175234 2018-2019-2 个人项目:数字黑洞(三):圣经数

来源

这个美妙的名称出自圣经《新约全书》中约翰福音第21章:耶稣对他们说:“把刚才打的鱼拿几尾来。”西门·彼得就去把网拉到岸上。那网网满了大鱼,共一百五十三尾。鱼虽这样多,网却没有破。

特点

任写一个3的倍数(正整数),把各位数字的立方相加,得出和,再把和的各位数字立方后相加,如此反复进行,最后必然出现“圣经数”。

功能

判断任一3的倍数的正整数,是否是圣经数,输出计算过程。

伪代码

1.判断输入数据X是否是3 的倍数的数
2.While(X!=153){
(1)将输入的数转化多个1位的数字
(2)计算每个1位数字的三次方,求和,赋值给X
}
3.已验证

产品代码

package Bible;

import java.util.Scanner;

/**
 * @author 15205
 * @date 2019/5/2   12:35
 */
public class Input {
    public static void main(String[] args) {
        int n = 0;

        while (n % 3 != 0 || n <= 0) {
            System.out.println("请输入一个三的倍数(正整数)");
            Scanner scanner = new Scanner(System.in);
            n = scanner.nextInt();
        }
        while(n!=153) {
            Sanci sanci = new Sanci();
            n = sanci.Sanci(n);
            System.out.println(n);
        }
        System.out.println("已验证");
    }
}

   class Len {
         int Len(int n) {
            int len;
            Integer m = n;
            len = m.toString().length();
            return len;
        }
    }
     class Chaifeng {
        int[] Chaifeng(int n) {
            int len;
            Len length=new Len();
            len=length.Len(n);
            int a[];
            a = new int[len];
            int i;
            for (i = 0; i < len; i++) {
                a[i] = n % 10;
                n = n / 10;

            }
           return a;
        }
    }

  class Sanci {
         int Sanci(int n) {
            int  i;
             int len;
             Len length=new Len();
             len=length.Len(n);
             int a[];
             Chaifeng chaifeng=new Chaifeng();
             a=chaifeng.Chaifeng(n);
             n=0;
             for(i=0;i<len;i++)
             {
                 n=a[i]*a[i]*a[i]+n;
             }
             return n;
        }
    }

测试代码

package Bible;

import junit.framework.TestCase;
import org.junit.Test;

/**
 * @author 15205
 * @date 2019/5/2   13:43
 */
public class LenTest extends TestCase {
    Len a = new Len();
    Sanci b = new Sanci();

    @Test
    public void testLen() throws Exception {
        assertEquals(3, a.Len(123));
        assertEquals(1, a.Len(3));
        assertEquals(4, a.Len(1236));
    }

    @Test
    public void testSanci() throws Exception {
        assertEquals(27,b.Sanci(3));
        assertEquals(351,b.Sanci(27));
        assertEquals(126,b.Sanci(15));
        assertEquals(9,b.Sanci(12));
        
    }
}

测试截图

码云链接

参考资料

版权声明:本文为ysz-123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ysz-123/p/10802246.html