Thinking in Java:第四章练习10:写一个程序,找出4位数的所有吸血鬼数字

吸血鬼数字:吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。

public class E10_Vampire { 
 public static void main(String[] args) { 
 int[] startDigit = new int[4]; 
 int[] productDigit = new int[4]; 
 for(int num1 = 10; num1 <= 99; num1++) 
 for(int num2 = num1; num2 <= 99; num2++) { 
 // Pete Hartley's theoretical result: 
 // If x·y is a vampire number then 
 // x·y == x+y (mod 9) 
 if((num1 * num2) % 9 != (num1 + num2) % 9) 
 continue; 
 int product = num1 * num2; 
 startDigit[0] = num1 / 10; 
 startDigit[1] = num1 % 10; 
 startDigit[2] = num2 / 10; 
 startDigit[3] = num2 % 10; 
 productDigit[0] = product / 1000; 
 productDigit[1] = (product % 1000) / 100; 
 productDigit[2] = product % 1000 % 100 / 10; 
 productDigit[3] = product % 1000 % 100 % 10; 
 int count = 0; 
 for(int x = 0; x < 4; x++) 
 for(int y = 0; y < 4; y++) { 
 if(productDigit[x] == startDigit[y]) { 
 count++; 
 productDigit[x] = -1; 
 startDigit[y] = -2; 
 if(count == 4) 
Controlling Execution 47 
 System.out.println(num1 + " * " + num2 
 + " : " + product); 
 } 
 } 
 } 
 } 
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值