码迷,mamicode.com
首页 > 其他好文 > 详细

吸血鬼数字

时间:2014-07-14 15:00:55      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:blog   http   java   art   for   cti   

P75,练习10

1994年柯利弗德·皮寇弗在Usenet社群sci.math的文章中首度提出吸血鬼数。后来皮寇弗将吸血鬼数写入他的书Keys to Infinity的第30章。

吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。
以两个0结尾的数字是不允许的,例如,下列数字都是“吸血鬼”数字:  
 
1260 = 21 * 60   1827 = 21 * 87   2187 = 27 * 81   

找出所有四位数的吸血鬼数字

首先。四位数的吸血鬼数字必须是两个两位数的乘积,可以用两层循环,得到所有两位数的乘积。最关键的部分是判断该乘积是不是由这两个两位数的数字所组成。我用的方法是将数字转换为字符串,然后将字符串转换为字符数组,对两个字符数组进行排序,比较排序之后的结果是不是相等。

代码如下:

import java.util.ArrayList;
	import java.util.Collections;
	import java.util.List;

	public class XiXueGuiNumber {
		
		public void calcu(){
			int first = 10;
			int second = 10;
			int multi;
			
			for (; first < 100; first++) {
				for (second = 100; second >= first; second--) {
					multi = first * second;
					
					if (multi % 100 == 0) {
						continue;
					}
					
					if (multi > 9999) {
						continue;
					}
					
					isXiXueGui(multi, first, second);
				}
			}
		}
		
		public void isXiXueGui(int toTest,int first,int second){
			List<Character> cheng = new ArrayList<Character>();
			for (Character character : String.valueOf(first).toCharArray()) {
				cheng.add(character);
			}
			for (Character character : String.valueOf(second).toCharArray()) {
				cheng.add(character);
			}
			
			List<Character> result = new ArrayList<Character>();
			for (Character character : String.valueOf(toTest).toCharArray()) {
				result.add(character);
			}
			
			Collections.sort(cheng);
			Collections.sort(result);
			
			if (cheng.equals(result)) {
				System.out.println(toTest + " = " + first + " * " +second);
			}
		}

		public static void main(String[] args) {
			// TODO Auto-generated method stub
			XiXueGuiNumber xiXueGuiNumber = new XiXueGuiNumber();
			xiXueGuiNumber.calcu();
		}
	}

网上还找到一篇文章也是吸血鬼数字的算法,要看点这里

吸血鬼数字,布布扣,bubuko.com

吸血鬼数字

标签:blog   http   java   art   for   cti   

原文地址:http://www.cnblogs.com/reading-coding/p/3841821.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!