Ở đây chúng ta sẽ thấy một số có phải là số bất thường hay không. Một số được cho là bất thường nếu thừa số nguyên tố lớn nhất của số đó lớn hơn căn bậc hai của số đó. Một số con số bất thường là: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
Để giải quyết điều này, chúng ta sẽ cố gắng tìm thừa số nguyên tố lớn nhất, sau đó kiểm tra xem thừa số có lớn hơn căn bậc hai của một số hay không. Nếu có, thì số đó là số bất thường, ngược lại thì không.
Ví dụ
#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"; } }
Đầu ra
14 is an unusual number