关于吸血鬼数:
写道
若 合成数 v 有偶数个位n ,且是 n/2 个位的正整数 x 和 y 的积,而且 x 和 y 不是同时以0为个位数,组成 x 和 y 的数字,刚好就是 v 的数字,那麽 v 就是 吸血鬼数 (vampire number),而 x 和 y 则称为 尖牙 。
例如1260是吸血鬼数,21和60是其尖牙,因为21×60=1260。可是126000=210×600却非,因为210和600都以0为个位数。
吸血鬼数是 傅利曼数 的一种。
1994年 柯利弗德·皮寇弗 在 Usenet 社群sci.math的文章中首度提出吸血鬼数。後来皮寇弗将吸血鬼数写入他的书 Keys to Infinity 的第30章。
例如1260是吸血鬼数,21和60是其尖牙,因为21×60=1260。可是126000=210×600却非,因为210和600都以0为个位数。
吸血鬼数是 傅利曼数 的一种。
1994年 柯利弗德·皮寇弗 在 Usenet 社群sci.math的文章中首度提出吸血鬼数。後来皮寇弗将吸血鬼数写入他的书 Keys to Infinity 的第30章。
代码:
String[] ar_str1,ar_str2;
int sum=0;
//双重循环穷举
for(int i=10;i<100;i++){
//j=i+1避免重复
for(int j=i+1;j <100;j++){
int i_val=i*j;
if(i_val <1000||i_val> 9999){
continue; //积小于1000或大于9999排除,继续下一轮环
}
ar_str1=String.valueOf(i_val).split("");
ar_str2=(String.valueOf(i)+String.valueOf(j)).split("");
Arrays.sort(ar_str1);
Arrays.sort(ar_str2);
//如果两个指定的 Objects 数组彼此相等,则返回 true
if(Arrays.equals(ar_str1,ar_str2)){
//排序后比较,为真则找到一组
sum++;
System.out.println("num\t" + (i*j)+"\ti\t" + i + "\tj\t" + j);
System.out.println( "第 "+sum+ "组: "+i+ "* "+j+ "= "+i_val);
}
}
}
System.out.println( "共找到 "+sum+ "组吸血鬼数 ");
}
说明:
1.该代码是引用别人的
2.计算的是四位数中的吸血鬼数字的个数!