首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

一简单的算法题目,欢迎大家提出更高效的解决方法.

2012-10-30 
一简单的算法题目,欢迎大家提出更高效的解决办法.................今天参加某公司的面试,笔试有一简单的算

一简单的算法题目,欢迎大家提出更高效的解决办法.................

今天参加某公司的面试,笔试有一简单的算法题目,答题速度慢,

刚要解答的时候,面试官来了,就没写,现在写在这里,和大家讨论下!

题目:给定一个整数num,判断这个整数是否是2的N次方

比如,2,4,8是2的那次方,6,10不是2的N次方

我的解决方法:

感谢undefined提出2的0次方等有1的问题,现已修正!

1)不断的循环temp=2*2*2*2......*2,当某次temp==num是可确定是2的N次方,

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class FindNum {private final static int N = 2; /** * @author hbliu * 功 能 使用位移的思路来解决 * @param number 待测试的数据 * @return true 是2的N次幂,false 不是2的N次幂 */public boolean testNum(long number){boolean exist = false;long temp = 0L;int index = 0;if(number == 1L){exist = true;}else{while(temp < number){temp = N << index;index++;}if(temp == number){exist = true;}else{exist = false;}}return exist;}public static void main(String[] args) {try{System.out.print("请输入要测试的数据:");BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String inputData = br.readLine();boolean bo = new FindNum().testNum(Long.valueOf(inputData).longValue());if(bo){System.out.println(inputData + "是2的N次幂。");}else{System.out.println(inputData + "不是2的N次幂。");}}catch(IOException ioe){System.out.println("输入数据有误!");}}} 3 楼 xiaonan2310 2012-01-12   1楼正解~

热点排行