`
^佐依^
  • 浏览: 17396 次
  • 性别: Icon_minigender_2
  • 来自: 惠安
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

吸血鬼数字

阅读更多

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

  1260 = 21 * 60

  1827 = 21 * 87

  2187 = 27 * 81

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

  最初几个吸血鬼数为:

  1260, 1395, 1435, 1530, 1827, 2187, 6880, 102510, 104260, 105210, 105264, 105750, 108135, 110758, 115672, 116725, 117067, 118440, 120600, 123354, 124483, 125248, 125433, 125460, 125500, ...

 

import java.util.Arrays;

public class Vampire {
	public static boolean isVamp1(long i, long j) { // 方法1
		long n = i * j;
		int[] digits = new int[10];
		while (n > 0) {
			digits[(int) n % 10]++;
			n = n / 10;
		}
		while (i > 0) {
			digits[(int) i % 10]--;
			i = i / 10;
		}
		while (j > 0) {
			digits[(int) j % 10]--;
			j = j / 10;
		}
		for (int k = 0; k < 10; k++) {
			if (digits[k] > 0)
				return false;
		}
		return true;
	}

	public static boolean isVamp2(long i, long j) { // 方法2
		String[] str1, str2;
		long n = i * j;
		str1 = String.valueOf(n).split("");
		str2 = (String.valueOf(i) + String.valueOf(j)).split("");
		Arrays.sort(str1);
		Arrays.sort(str2); // 对字符串进行排序
		if (Arrays.equals(str1, str2)) // 排序后比较
			return true;
		else
			return false;
	}

	public static void main(String[] args) {
		int count1 = 0, count2 = 0;
		int n = 6, n1 = n / 2; // n为积位数,需为偶数,n1为乘数位数
		long a = (long) Math.pow(10, n1 - 1); // 乘数下限,这里为100
		long b = (long) Math.pow(10, n1); // 乘数上限,这里为1000
		long c = (long) Math.pow(10, n - 1); // 积下限,这里为100000
		long e = (long) Math.pow(10, n); // 积上限,这里为1000000
		long from, to;
		for (long i = a; i < b; i++) {
			from = Math.max(c / i, i + 1);
			to = Math.min(e / i, b);
			for (long j = from; j < to; j++) {
				long d = i * j;
				if (d % 100 == 0 || (d - i - j) % 9 != 0) {
					continue;
				}
				if ((d > c) && isVamp1(i, j)) {
					count1++;
					System.out.println("方法1第" + count1 + "组" + i + "*" + j
							+ "=" + d);
				}
				if ((d > c) && isVamp2(i, j)) {
					count2++;
					System.out.println("方法2第" + count2 + "组:" + i + "*" + j
							+ "=" + d);
				}
			}
		}
		System.out.println("方法1共找到:" + count1 + "组吸血鬼数");
		System.out.println("方法2共找到:" + count2 + "组吸血鬼数");
	}
}

 

分享到:
评论

相关推荐

    4位吸血鬼数字

    4位吸血鬼数字java原码

    c语言 吸血鬼数字简单源码

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

    Java实现吸血鬼数字

    Java实现吸血鬼数字的3种算法,3种算法的效率各自的比较

    1-10000吸血鬼数字

    只修改main 的for就可以得到一下结果,运行时间有点长,应该稍微优化一下 配合我发送的 http://download.csdn.net/source/530288 修改使用 public static void main(String[] args){ for(int x=1;...

    JAVA求吸血鬼数字

    吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。以2个0结尾的数字是不允许的,例如,下列数字都是吸血鬼数字: 1260 ...

    JAVA吸血鬼数字算法

    THINK IN JAVA上的课后题,只是寻找4位数的。

    4位吸血鬼数字的java实现思路与实例讲解

    今天小编就为大家分享一篇关于4位吸血鬼数字的java实现思路与实例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    1-10000中的吸血鬼数组合

    可爱的吸血鬼数。可爱的吸血鬼数。可爱的吸血鬼数。可爱的吸血鬼数。

    找出4位数的所有“吸血鬼”数字多种高效算法详解

    关于吸血鬼数字算法问题,我也是读《java编程思想》中遇到的,觉得很有意思。于是,就去做了做。但因为我的粗心,读题的时候忽略了点问题,所以导致我的思路出现了岔口!(当时的思路就是想着把一个4位数拆分成两个2...

    helsing:POSIX吸血鬼编号生成器

    赫尔辛一个POSIX吸血鬼数字生成器,内置了heapsort。该项目的重点是性能,代码可读性和可移植性。 在helsing / configuration.h中,您可以轻松设置线程数,选择算法实现并进行调整,调整详细程度并启用从检查点恢复...

    vampire-number-kata:Java中的吸血鬼号码的Kata(只是为了好玩)

    ##挑战:给定一个数字,检测并显示介于0和该给定数字之间的所有吸血鬼数字吸血鬼编号-Fang1 * Fang2 规则1:吸血鬼编号必须为偶数位数规则2:每个毒牙的位数必须是吸血鬼数的一半规则3:吸血鬼编号中的所有数字必须...

    Vampire Code

    有多种关于吸血鬼数字的算法 ! 输出结果为: 1260 = 21 * 60 1395 = 15 * 93 1435 = 41 * 35 1530 = 51 * 30 1827 = 87 * 21 2187 = 27 * 81 6880 = 86 * 80 6880 = 80 * 86 以上仅供参考:

    吸血鬼算法

    自己用java写的一个吸血鬼算法,希望大家给点意见!

    xixuegui.zip_Java编程_Java_

    本程序用java实现了吸血鬼数字的功能,欢迎大家下载

    C#数字图像处理算法典型实例源代码

    C#数字图像处理算法典型实例源代码

    Survivor:一个用Python编写的自上而下的开放世界生存游戏

    控制项行动钥匙移动W A S D ,箭头键或数字键盘2 4 6 8 (按住Shift键可将其转到适当的位置) 相互作用E , Z或数字键盘5 退出游戏Esc键静音中号切换调试覆盖\学分我自己创建了该项目中使用的大多数资产。...

    实用电源设计:新一代AC-DC适配器充电器问世

    Q1:该新型数字控制技术具体优势是什么?  A1:优势主要是看用在什么功率上。如果是在低功率上,优势主要是在它是用数字方式来实现... A3:因其耗能特性而被我们称之为“能源吸血鬼”的线性电源,使用了与当前创新

    JS:用Java训练我的知识

    学习JS :check_mark_button: 学习JS ... 与吸血鬼主题颜色相同 :books: IMC项目 国际货币基金组织 :books: 项目DateArraySwitch 日期(小时()) :books: 项目节点列表 Altera CSS de cada

Global site tag (gtag.js) - Google Analytics