吸血鬼數(Java)
程式碼:
import java.util.ArrayList;
import java.util.Arrays;
/*吸血鬼數*/
public class CH4_10{
public static void main (String[] args){
/* 吸血鬼數,偶數位。 1260 = 21 *60 */
//求的是 2位乘2位 的整數
ArrayList list=new ArrayList();//處理循序加入以及存取元素方面,效率較佳
for(int i=10 ; i<=99 ; i++){
for(int j=10 ; j<=99 ; j++){
int mul = i*j ;
if(mul >= 1000 && mul <= 9999){
String s = String.valueOf(mul);//整數轉字串,並用""切割儲存成字串陣列
String ij = (String.valueOf(i) + String.valueOf(j));//將 乘數 與 被乘數 兩字串合併
String sortmul = sort(s); //引用方法排序
String sortij = sort(ij); //引用方法排序
if(sortmul.equals(sortij)){ //相同就執行 吸血鬼數有特徵自己注意
/* 判斷相乘重複數值 利用 i 跟 j 的特性 如: 15*93 和 93*15 是一樣的 */
list.add(i);//存取到list
//System.out.println(list.size());//查看list長度
if(!list.contains(j))//j是否有跟i重複到,contains包含
System.out.println(i +" * "+ j +" = "+ mul);
}
}
}
}
}
/*--------------sort方法--------------------------------*/
static String sort(String s){
int len = s.length();
/*字串存放到字元陣列 */
char [] ch = new char[len];
for(int i=0 ; i<len ; i++){
ch[i] = s.charAt(i);
}
/*排序*/
for(int i=0 ; i<len-1 ; i++){
for(int j=0 ; j<len-i-1; j++){
if(ch[j] > ch[j+1]){
char temp = ch[j];
ch[j] = ch[j+1];
ch[j+1] = temp;
}
}
}
/*把字元變成字串 */
String s1="";
for(int i=0 ; i<len ; i++){
s1 += ch[i];
}
return s1;
}
}
/* Output:
15 * 93 = 1395
21 * 60 = 1260
21 * 87 = 1827
27 * 81 = 2187
30 * 51 = 1530
35 * 41 = 1435
80 * 86 = 6880
*///:~
留言
張貼留言