找出吸血鬼数字

本文通过Java实现了一种算法来找出所有由两个两位数相乘得到的四位数范围内的吸血鬼数。吸血鬼数是指一个数可以由两个较小的数相乘得到,并且这些较小的数所包含的所有数字恰好在大数中出现一次。文中详细展示了如何通过遍历与字符串处理的方法找到这些特殊的数。
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class TestVampireNumber {
 public static void main(String[] args) {
  StringBuilder sb=new StringBuilder();
  for(int i=1;i<10;i++){
   for(int j=0;j<10;j++){
     sb.append((i*10+j)+" ");
   }
  }
  String str[]=sb.toString().split(" ");
  Map<Integer,String> map=new HashMap<>();
  for(int i=0;i<str.length;i++){
   for(int j=0;j<str.length;j++){
    int a=Integer.parseInt(str[i]);
    int b=Integer.parseInt(str[j]);
    int c=a*b;
    String[] str1=String.valueOf(c).split("");
    Arrays.sort(str1);
    String[] str2=(String.valueOf(a)+String.valueOf(b)).split("");
    Arrays.sort(str2);
    boolean bo=Arrays.equals(str1, str2);
    if(c>1000&&c<10000&&c%100!=0&&bo){
     map.put(c, a+"*"+b);
    }
   }
  }
  for(Integer c:map.keySet()){
   System.out.println(c+"="+map.get(c));
  }
  System.out.println(map.size());
 }
}

转载于:https://my.oschina.net/u/2430057/blog/498351

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值