騷操作=>快速判斷一個數是否是某個質數的冪---C++實現

由一道LeetCode題演變而來
在這裏插入圖片描述
思路:

當然可以通過循環來實現,從1開始乘,每次乘3,即可。
這裏有個巧妙的方法,由於3是質數,32位有符號整數int中最大的3的冪是1162261467,
即可根據1162261467 % n == 0來判斷。
類似5 7 11 這樣的質數也同理(2除外,2的冪可以通過n&n - 1 == 0 來判斷 )。

bool isPowerOfThree(int n) {
    if (n < 1)
        return false;
    return 1162261467 % n == 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章