20175234 2018-2019-2 个人项目:数字黑洞(三):圣经数
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));
}
}