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