用 C++ 檢查一個數是否是異常數


這裡我們將瞭解一個數是否是異常數。如果一個數的最大素因子嚴格大於該數的平方根,則稱該數為異常數。一些異常數為:2、3、5、6、7、10、11、13、14、15、17、19、20、21、22、23、26、28、29、31、33、34、35、37、38、39、41、42、43、44、46

為了解決這個問題,我們將嘗試找到最大的素因子,然後檢查該因子是否大於該數字的平方根。如果是,則該數為異常數,否則不是。

示例

 即時演示

#include <iostream>
#include <cmath>
using namespace std;
int largestPrimeFactor(int num) {
   int max_prime = -1;
   while (num % 2 == 0) { //remove all 2s from the number
      max_prime = 2;
      num >>= 1;
   }
   for (int i = 3; i <= sqrt(num); i += 2) {
      while (num % i == 0) {
         max_prime = i;
         num = num / i;
      }
   }
   if (num > 2)
   max_prime = num;
   return max_prime;
}
bool isUnusual(int num) {
   int largePrimeFactor = largestPrimeFactor(num);
   if (largePrimeFactor > sqrt(num)) {
      return true;
   } else {
      return false;
   }
}
int main() {
   int n = 14;
   if (isUnusual(n)) {
      cout << n << " is an unusual number";
   } else {
      cout << n << " is not an unusual number";
   }
}

輸出

14 is an unusual number

更新於:2019 年 10 月 22 日

158 次瀏覽

開始你的 事業

完成課程獲得認證

開始
廣告