`

Java判断一个正整数是不是2的乘方

阅读更多

      这是在http://okruby.com/ruby-wenzhai/200901/27_551.html上面看到的一个题目,就写了一下。暂时就只想到这样做了,也许还有更好的算法。

 

import java.util.Scanner;

public class Test 
{
	public static void main(String[] args)
	{
		int temp = 1;

		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		
		while(true)
		{
			if(temp < n)
				temp<<=1;  //相当于temp = temp * 2;
			else if(temp > n)
			{
				System.out.println("该数不是2的乘方!");
				break;
			}
			else
			{
				System.out.println("该数是2的乘方!");
				break;
			}
		}
		
	}
}

 

2
2
分享到:
评论
7 楼 yoyo08 2009-02-11  
RednaxelaFX 写道

这种技巧读一下《Hacker's Delight》会颇有收获。 话说楼主给的代码有个明显的死循环问题,不知道有没有注意过呢?可以试试所有大于0x40000000并小于0x80000000的整数试试。这是2的补码的特征来的~

恩 现在发现了
6 楼 RednaxelaFX 2009-02-11  
这种技巧读一下《Hacker's Delight》会颇有收获。

话说楼主给的代码有个明显的死循环问题,不知道有没有注意过呢?可以试试所有大于0x40000000并小于0x80000000的整数试试。这是2的补码的特征来的~
5 楼 njuptsoz 2009-02-09  
yoyo08 写道

njuptsoz 写道
if( n&amp;(n-1)==0 ){
&nbsp;&nbsp; return true;
}else{
&nbsp;&nbsp; return false;
}

这样很好,不过应该这样写:if((n&amp;(n-1))==0),也就是多一层括号。要不是你写出来,我就想不到这样做。



不是我写的,是老紫竹写的
4 楼 yoyo08 2009-02-09  
njuptsoz 写道

if( n&(n-1)==0 ){
   return true;
}else{
   return false;
}

这样很好,不过应该这样写:if((n&(n-1))==0),也就是多一层括号。要不是你写出来,我就想不到这样做。
3 楼 yoyo08 2009-02-09  
ghostknight 写道

   int number = 1;
    String string = Integer.toBinaryString(number);
    if (string.matches("10*")) {
      System.out.println("true");
    } else {
      System.out.println("false");
    }

谢谢 这样很好 以前不知道Integer.toBinaryString(number) 没使用过 又长知识了。
2 楼 njuptsoz 2009-02-09  
直接
if( n&(n-1)==0 ){
   return true;
}else{
   return false;
}
1 楼 ghostknight 2009-02-09  
 
   int number = 1;
    String string = Integer.toBinaryString(number);
    if (string.matches("10*")) {
      System.out.println("true");
    } else {
      System.out.println("false");
    }

相关推荐

    500道java经典笔试题和标准答案.docx

    该程序将一个正整数分解质因数,例如将 90 分解为 2*3*3*5。知识点: * 质因数的定义和应用 * Java 中的循环语句和条件语句 * 数学函数的应用(整除和模运算) 本资源涵盖了 Java 编程的多个方面,包括算法、数据...

    java机试题,java基础练习题

    【程序 4】 分解质因数是将一个正整数表示为其质因数的乘积。可以通过循环和判断质因数的方式来实现。核心思路是找到最小的质数k,然后不断用n除以k直到无法整除,接着寻找下一个质数,继续除法操作。 【程序 5】 ...

    JAVA编程试题.docx

    阶乘是所有小于等于该数字的正整数的乘积。 4. **兔子问题** 这是一个经典的斐波那契数列问题。斐波那契数列中每个数是前两个数的和。程序采用递归算法计算第n个月的兔子总数。递归函数 `f(n)` 会根据 n 的值调用...

    《Java程序设计》课程设计报告带有函数功能的计算器设计

    《Java程序设计》课程设计报告中的主题是设计一个带有函数功能的计算器,旨在巩固和深化学生对Java语言的理解,提高编程实践能力。该计算器具备简易计算和科学计算两种模式,适用于基础和高级数学运算。 在简易计算...

    最新JAVA编程题全集(50题及答案).doc

    System.out.print("请键入一个正整数: "); int n = s.nextInt(); int k = 2; System.out.print(n + "="); while (k ) { if (k == n) { System.out.println(n); break; } else if (n % k == 0) { System....

    Java计算器的课程设计

    - **编写一个简单的计算器程序**:该计算器具备基本的算术运算功能,如加、减、乘、除,并且还支持一些高级运算,例如乘方、开平方根等。 - **用户交互**:用户可以通过点击数值或操作符按键来完成计算输入,结果将...

    Java机考200题

    - **解析**:输入一个整数,使用模运算判断是否能被5和6整除,是否能被5或6整除,以及是否能被5或6整除但不能同时被5和6整除。 #### 题目14:复利计算 - **知识点**:指数运算,财务计算公式。 - **解析**:根据...

    java script 应用基础.pdf

    - 数组元素:数组元素通过方括号([])访问,例如`arr[0]`表示访问数组的第一个元素。 JavaScript还支持函数、对象、原型链、闭包、异步编程(如回调函数、Promise、async/await)等多种复杂特性,这些是构建动态...

    2011国信蓝点杯试题

    这是一个涉及组合数学和编程的问题,需要找到所有正整数对,它们的和是一个素数。为了解决这个问题,参赛者需要先编写一个判断素数的函数,然后通过遍历整数集合,对每一对整数进行判断,看它们的和是否为素数。在...

    【编程】python三级模拟题.pdf

    n = int(input("请输入一个正整数:")) for i in range(1, n+1): if i % 3 == 0 and i % 5 == 0: print(i) ``` 17. 运动打卡奖励程序: - 当输入`-1`时,由于小于0,程序会输出“输入错误”,因此填入`A.输入...

Global site tag (gtag.js) - Google Analytics