判斷一個整數是否為另一個整數的冪數,整數冪數
最近在學習微軟推出的虛擬課程中關於網絡上最火的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
怎判斷一個數是否整數?
如果不用is_int()函數的話,貌似不能判斷。可以試一下用正則表達式。
<?php
$num=@$_GET['num'];
$match="/^\-?[1-9]{1}[0-9]*$|^[0]{1}$/"; //匹配所有整數(自己寫的正則表達式,樓主在地址欄用?num=xxxx向本頁面傳遞參數驗證一下)
if(preg_match($match,$num)){
echo "{$num}是整數.";
}else{
echo "{$num}不是整數.";
}
excel 怎判斷一個數除以另一個數是否為整數
假設 兩個數 在A1 B1
那麼C1 輸入 =IF(MOD(A1,B1)=0,"整數","有余數")