Java列印所有整數中2的乘方

yoyochina發表於2009-02-11

     上一篇的演算法有問題,效率很低,而且會陷入死迴圈。

     還是下面的方法效率較高,需要注意的是:應該是n<Integer.MAX_VALUE,而不是n<=Integer.MAX_VALUE,要不然就陷入死迴圈了(n=Integer.MAX_VALUE+1的結果是n=Integer.MIN_VALUE)。

 

public class Test 
{
	public static void main(String[] args)
	{		
		for(int n=1; n<Integer.MAX_VALUE; n++)
		{
			//方法一
			if((n&(n-1))==0)
				System.out.println(n+"是2的乘方!");
//			else
//				System.out.println(n+"不是2的乘方!");
			
			//方法二
//			String str = Integer.toBinaryString(n);
//			if(str.matches("10*"))
//				System.out.println(n+"是2的乘方!");
////			else
////				System.out.println(n+"不是2的乘方!");
		}
	}
}

 

相關文章