JAVA基礎編程練習題--50道之13

題目:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?

在那50題看到這個的時候,感覺挺簡單的,但是實際做出來的時候,花費了真不少時間(小白,不太懂),也看了網上的發佈的,但是發現都是使用Math裏面的一個開平方方法,因爲沒有有學到這個,所以不想用這個方法來用.就像着能不能不用系統給定的方法來完成,就使勁琢磨,還好,終於出來了,雖然感覺不太好

public class Demo1 {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    int num1 = 0;//定義兩個數,來獲取有多少個符合條件的完全平方數

    //定兩個數組,來存儲每一個符合條件的完全平方數,大小100,是因爲不確定到底有多少個,就先設置了100,太小了也不行,聽說是有自動增長數組的函數,但是沒有學過,就沒有用
    int[] arr1 = new int[100];      
    int[] arr2 = new int[100];
    //利用循環,遍歷每一個符合條件的數值
    for (int i = 0; i < 10000; i++) {
        for (int j = 0; j < 10000; j++) {
            if (i + 100 == j * j) {
            //判斷符合i+100的數,如果符合,把第i個元素賦值給arr1[num1]
                num1++;//每一個符合的數,都執行這句
                arr1[num1] = i;//賦值
            }               
        }
        for (int k = 0; k < 10000; k++) {
            if (i + 268 == k * k) {
            //判斷符合i+100+128的數,如果符合,把第i個元素賦值給arr2[num2]
                num2++;//每一個符合的數,都執行這句
                arr2[num2] = i;//賦值
            }   
        }
    }
    //利用上面返回的值,來循環兩個數組,判斷兩個數組的每一個元素是否相等,相等的話,輸出兩個數組任意一個該下標的值
    //無效值,數組沒有給定值,好像默認是0值,
    for (int n = 0; n < arr1.length; n++) {
        for (int m = 0; m < arr2.length; m++) {
            if (arr1[m] == arr2[n] && arr1[m] != 0 && arr2[n] != 0) {//判斷是否相等,是否是無效值
                System.out.println(arr1[m]);
            }
        }
    }
}

}

最後,感覺試用while好點,因爲while可以不用給定10000這樣的不確定值,後面再改進改進

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章