用 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP