国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

判斷一個整數是否為另一個整數的冪數

2019-11-17 02:51:55
字體:
來源:轉載
供稿:網友

判斷一個整數是否為另一個整數的冪數

   最近在學習微軟推出的虛擬課程中關于網絡上最火的20個關于c#的問題,寫下關于對于這個問題的個人理解和解決思路,請各位看官笑納.

題目為:(原)判斷一個數字是否2的冪數?

這是我個人還沒看正確答案前自己的解決思路(一個小控制臺程序),代碼如下:

  static void Main(string[] args)        {            for (int increment = 0; increment < 100000; increment++)            {                if (IsPower(increment))                {                    Console.WriteLine(increment);                }            }            Console.ReadKey();        }           PRivate static bool IsPower(int number)        {            bool result = false;            if (number <= 0 || number % 2 == 1) return false;            if (number / 2 > 1)            {                result = IsPower(number / 2);            }            else            {                result = number % 2 == 0;            }            return result;        }
View Code

我的解決思路是利用遞歸方法,方法自己調用自己 ,知道最后一次調用方法不是1就是0來判斷是否為冪數.下面是微軟所提供的解決方案:

      static void Main(string[] args)        {            for (int increment = 0; increment < 100000; increment++)            {                if (isPowerFromMic(increment))                {                    Console.WriteLine(increment);                }            }            Console.ReadKey();        }           private static bool isPowerFromMic(int number)        {            return number >1 && ((number & (number - 1)) == 0);        }
View Code

頓時看了他們的解決方案后,感覺自己的解決方案弱爆了的感覺,囧! 這個思路還是依靠著計算機二進制的原理,如下圖:

我簡要說明下:就是當每次向前近位后第一位總是為1,而后面的位數皆為0,如8&7 = 0.相信各位還是很容易理解的.

由此可以借題發揮,不由得想到是不是可以出個題目(微軟的這個方法似乎不利于拓展,稍稍修改了自己的代碼):

判斷一個整數是另一個數的冪數?而不止于2呢?

  static void Main(string[] args)        {            while (true)            {                int baseNumber = Int32.Parse(Console.ReadLine());                int powerNumber = Int32.Parse(Console.ReadLine());                Console.WriteLine(IsPower(baseNumber, powerNumber));            }        }        private static bool IsPower(int number, int powerNumber)        {            bool result = false;            if (number <= 0 || number % powerNumber != 0) return false;            if (number / powerNumber > 1)            {                result = IsPower(number / powerNumber, powerNumber);            }            else            {                result = number % powerNumber == 0;            }            return result;        }
View Code


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 漳平市| 江达县| 龙口市| 沙洋县| 玉树县| 上犹县| 肃宁县| 饶阳县| 琼海市| 汉沽区| 万载县| 金昌市| 界首市| 陆河县| 个旧市| 遵义市| 武胜县| 周至县| 山东| 宾阳县| 当阳市| 肥西县| 雅安市| 霍城县| 满洲里市| 绵阳市| 宣化县| 闸北区| 益阳市| 静海县| 临西县| 化德县| 敦化市| 荆门市| 太仓市| 东乡族自治县| 漳浦县| 大厂| 平度市| 柞水县| 青铜峡市|