平方数 Java
square numbers Java
"An array is used to store ten integer numbers. Write a Java program that determines and print the square numbers which are also odd numbers from the given array."
我遇到的问题是如何判断数组中的数字是否为平方数。我试过这种方法,但不正确!
import java.math.*;
public class JavaApplication43 {
public static void main(String[] args) {
int[] no = {22, 44, 25, 89, 81, 55, 23, 25, 55};
for (int i = 0; i < no.length; i++) {
int x = no[i];
double y;
if (x % 2 != 0) {
y = Math.sqrt(x);
if (x == (Math.pow(y, 2)))
System.out.println(no[i]);
}
}
}
}
这是它给我的输出
run:
25
81
55
25
55
55
是不是也有,说明我用的这个方法不成功!
你可以这样做:
for (int i = 0; i < no.length; i++) {
int x = no[i];
if (x % 2 == 0) continue;
int y = (int) Math.sqrt(x);
if (x == y * y) {
System.out.println(x);
}
}
您可以通过检查其平方根是否为整数来确定一个数是否为平方数。
double sqrt = Math.sqrt(x);
long sqrt2 = Math.round(sqrt);
if (Math.abs(sqrt - sqrt2) / sqrt < 1e-15)
// we have a square.
如果您知道 x
是一个 int
,您就不会出现舍入错误,您可以这样做
int x = ...
double sqrt = Math.sqrt(x);
if ((int) sqrt == sqrt)
// we have a square.
希望这会更容易,
if((arr[i]%2 != 0) & (Math.sqrt(arr[i])%1 == 0)){
System.out.println(arr[i]);
}
在这里,if 条件首先通过取模除法检查 number 是否为奇数,第二个条件检查 number 是否为完全平方数。首先我得到给定数字的平方根,然后取模数除以 1 并检查它是否等于 0。如果数字是一个完美的平方,那么当我取整数的模数除法时,该数字的平方根是一个整数答案应等于 0.
"An array is used to store ten integer numbers. Write a Java program that determines and print the square numbers which are also odd numbers from the given array."
我遇到的问题是如何判断数组中的数字是否为平方数。我试过这种方法,但不正确!
import java.math.*;
public class JavaApplication43 {
public static void main(String[] args) {
int[] no = {22, 44, 25, 89, 81, 55, 23, 25, 55};
for (int i = 0; i < no.length; i++) {
int x = no[i];
double y;
if (x % 2 != 0) {
y = Math.sqrt(x);
if (x == (Math.pow(y, 2)))
System.out.println(no[i]);
}
}
}
}
这是它给我的输出
run:
25
81
55
25
55
55
是不是也有,说明我用的这个方法不成功!
你可以这样做:
for (int i = 0; i < no.length; i++) {
int x = no[i];
if (x % 2 == 0) continue;
int y = (int) Math.sqrt(x);
if (x == y * y) {
System.out.println(x);
}
}
您可以通过检查其平方根是否为整数来确定一个数是否为平方数。
double sqrt = Math.sqrt(x);
long sqrt2 = Math.round(sqrt);
if (Math.abs(sqrt - sqrt2) / sqrt < 1e-15)
// we have a square.
如果您知道 x
是一个 int
,您就不会出现舍入错误,您可以这样做
int x = ...
double sqrt = Math.sqrt(x);
if ((int) sqrt == sqrt)
// we have a square.
希望这会更容易,
if((arr[i]%2 != 0) & (Math.sqrt(arr[i])%1 == 0)){
System.out.println(arr[i]);
}
在这里,if 条件首先通过取模除法检查 number 是否为奇数,第二个条件检查 number 是否为完全平方数。首先我得到给定数字的平方根,然后取模数除以 1 并检查它是否等于 0。如果数字是一个完美的平方,那么当我取整数的模数除法时,该数字的平方根是一个整数答案应等于 0.