* 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 * 如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。 */
1.时间超限
public class Demo22 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个正整数");
int n = sc.nextInt();
if (n == 1) {
System.out.println(true);
} else {
while (n != 1) {
if (n % 2 != 0) {
System.out.println("false");
return;
}
n /= 2;
}
System.out.println(true);
}
}
}
2.时间不超限
public class Demo22 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个正整数");
int n = sc.nextInt();
if (n == 1) {
System.out.println(true);
} else {
String n1=String.valueOf(n);
long n2=Long.parseLong(n1);
long test=1;
int i=1;
while (n2>test) {
test= (long) Math.pow(2,i);
if(n==test){
System.out.println(true);
return;
}
i++;
}
System.out.println(false);
}
}
}