用 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
廣告