吸血鬼數(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
*///:~

留言

熱門文章