여기서 숫자가 비정상적인 숫자인지 여부를 알 수 있습니다. 숫자의 가장 큰 소인수가 숫자의 제곱근보다 엄밀히 말하면 숫자가 비정상적이라고 합니다. 특이한 숫자는 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