吸血鬼数字、斐波那契数列算法
2015-01-06 18:02
218 查看
吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。
如:1260 = 21 * 60;1827 = 21 * 87
其实现过程如下:
斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
这个数列从第三项开始,每一项都等于前两项之和。
其实现如下:
如:1260 = 21 * 60;1827 = 21 * 87
其实现过程如下:
@Test public void test3(){ for(int i = 1000; i <= 9999; i++){ //4位数中的数字,过滤掉后两位为0的 if((i % 100) != 0){ demo1(i); } } } /** * <p> * 吸血鬼数字算法 * <p> * @author hxlzpnyist * @param * @return */ public void demo1(int num){ boolean flag = false; String var = num + ""; //获取组成数字的 字符 即 1234 ~[1,2,3,4] char[] vars = var.trim().toCharArray(); char[] vars1 = vars; List<Integer> list = new ArrayList<Integer>(); //获取数字 拆分后的字符可组成的笛卡尔积 过滤掉 相同数字组成的 两位数 即过滤掉 11 22 33 44 //list 中存储的应类似 [12,13,14,21,23,24] for (char c : vars) { for (char ch : vars1) { if(c != ch){ int ci = (Integer.parseInt(c + "") * 10) + Integer.parseInt(ch + ""); list.add(ci); } } } //当两位数乘机 = 原数字时,即表示当前数字为吸血鬼数字 for(int i = 0; i < list.size(); i++){ int arg1 = list.get(i); for(int j = i + 1; j < list.size(); j++){ int arg2 = list.get(j); if((arg1 * arg2) == num){ flag = true; System.out.println(num + " = " + arg1 + " * " + arg2); break; } } if(flag){ break; } } }注:目前这种实现只适用于四位数的,还需扩展。
斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
这个数列从第三项开始,每一项都等于前两项之和。
其实现如下:
@Test public void test2(){ int arg = 34; demo(arg); } /** * <p> * 斐波那契数字算法 * <p> * @author hxlzpnyist * @param * @return */ public void demo(int arg){ int var = 1; int temp = 0; while(var != arg){ int num = var; System.out.println(var); var += temp; temp = num; } System.out.println(var); }
相关文章推荐
- 吸血鬼数字检验之java实现
- [置顶] 关于四位数的“吸血鬼数字”java写法和c的写法
- 找出四位数的所有吸血鬼数字(JAVA)
- 我的第一篇IT博文:关于查找“吸血鬼数字”算法的讨论
- 关于吸血鬼数字的获取
- 4位吸血鬼数字
- Java 吸血鬼数字
- java编程思想_009吸血鬼数字
- 求吸血鬼数字
- 吸血鬼数字算法
- 吸血鬼数字
- Java - 吸血鬼数字
- 吸血鬼数字,Java编程思想第四章练习10
- “吸血鬼”数字
- JAVA 吸血鬼数字学习
- 吸血鬼数字
- Think in java中关于吸血鬼数字问题的算法
- 吸血鬼数字的java编程 java编程思想上的题目
- 吸血鬼数字
- THINKING IN JAVA中吸血鬼数字题目的答案,稍作修改