JAVA基础编程练习题--50道之13

时间:2022-04-11 11:41:09

题目:一个整数,它加上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这样的不确定值,后面再改进改进