首頁  >  文章  >  如何在 Java 中編寫一個函數來檢查一個數字是否是另一個數字的冪?

如何在 Java 中編寫一個函數來檢查一個數字是否是另一個數字的冪?

王林
王林轉載
2024-02-22 13:20:14844瀏覽

php小編柚子為您帶來Java程式設計問題解答:如何在Java中寫一個函數來檢查一個數字是否是另一個數字的冪?編寫這樣的函數將有助於您在Java程式中快速且準確地判斷數字之間的倍數關係,為您的程式設計工作提供便利。在本文中,我們將探討如何使用Java語言編寫這樣一個函數,並給出詳細的程式碼實作和範例說明。讓我們一起來深入了解吧!

問題內容

我寫了一個布林函數,用來檢查整數 m 是否是 n 的冪。但我的程式碼不正確。例如,625 是 5 的冪。但我的程式碼回傳 false。

public static boolean isPower(int m, int n) {
  if (m <= n) {
    return false;
  }
  int pow = n;
  while (pow <= m) {
    pow = n * pow;
    if (pow == m) {
      return true;
    }
    pow++;
  }
  return false;
}

解決方法

  • 評論中指出了您的解決方案中的一個錯誤。
  • 您的程式碼也無法很好地處理 m = 1 的情況。
  • 對於大多數輸入,以下方法可以減少迭代次數:
// for n, m > 0
static boolean isPower(int m, int n) {
    while (m % n == 0) {
        m /= n;
    }
    
    return (m == 1);
}

這裡我反覆將 m 除以 n,直到我遇到非零餘數。對於 n 的精確冪,我最終會得到 m = 1

使用此方法的所有可能的m 值的(n - 1)/n 在第一次迭代時都會被拒絕,因為n連續數字中只有一個數字有m % n == 0

以上是如何在 Java 中編寫一個函數來檢查一個數字是否是另一個數字的冪?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除