输入一个N,用N判断是否为2的次方公式是什么。。??拜托。

解决方案 »

  1.   

    从2开始,不断乘以2,每次乘以次都和那个数N比较一下,如果最终跟N相等,那么N就是2的次方数,如果最后竟然超过了N,那么就不是。
      

  2.   

    就是写判断啊。就是 比如if (nXXXXXXXXX)
    如果是就YES。不是就N。
      

  3.   

    something likestatic bool IsPow2N(int n)
      {
         if (n<=0)
    return false;     if (n==1)
    return true;     if ((n % 2) != 0)
    return false;     return IsPow2N(n/2);
      }
      

  4.   

    哦,sorry,应该从1开始,1是2的0此方。
      

  5.   

    555555555  thanks 思归
      

  6.   

    // 非递归的:
    using System;namespace Test
    {
        class Test1 {         public static bool IsPowerOf2(int n) {
                int i = 1;
                while(i <= n) {
                    if(i == n)
                        return true;
                    i *= 2;
                }
                return false;
            }        public static void Main() {
                int[] testData = {128, 256, 512, 1024, 2048, 255, 364, 555555, 520147};            foreach(int data in testData) {
                    Console.WriteLine(data + ":\t" + (IsPowerOf2(data) ? "是" : "否"));
                }
            }
        }
    }
      

  7.   

    如果用TRY CATCH怎么写啊。。而且转换textbox.text    是用int parse吗。还是有其他方法
      

  8.   

    /steedhorse。。我是用textbox。。读出来付给N
      

  9.   

    steedhorse。。55555帮帮小弟吧。弄个TEXTBOX版的
      

  10.   

    static bool IsPow2N(string n)
    {
        try
        {
            return IsPow2N(Int32.Parse(n));
        }
        catch
        {
            return false;
        }
    }
      

  11.   

    while(n%2==0&&n>1)
    {
    n/=2;
    }
    if(n>1)return false;
    else retutn true;