判断一个数是否2的N次方

Fri May 22 20:29:31 CST 2015 605 算法

文章摘要输入一个正整数k,判断数字k是否为2的N次方,其中N为非负整数;若k为2的N次方,则输出1;否则输出0。

练习级难度题目:判断一个整数是否为2的N次方,是则输出1,否则输出0.


可以将正整数k转换为二进制字符串,然后去数该二进制串中“1”个数,若个数为1则正整数k为2的N次方;否则不是。


Java代码实现:

public class Main{
    public static void main(String[] args){
        java.util.Scanner sc = new java.util.Scanner(System.in);
        int k = sc.nextInt();         //接收输入
        String str = Integer.toBinaryString(k);    //转换成二进制字符串
        
        int count = 0;       //计数器
        
        //遍历二进制字符串str的每个字符,数一数有多少个'1'
        for(int i = 0; i < str.length; i++)
            if(str.charAt(i) == '1')
                count++;
        
        if(count == 1) System.out.print(1);
        else System.out.print(0);
    }
}

Java代码实现如上。


打赏
打赏

分享到: