507.完美数
这道题十分简单,我觉得也没必要说太多,我们只需在[1, √n]这个区间内找出他的所有因子,并加起来,最后判断是否与n相等。 直接上代码:
bool checkPerfectNumber(int num){
if(num == 1){
return false;
}
int sum = 0;
for(int i = 1; i * i <= num; i++){
if(num % i == 0){
sum += i;
sum += num / i;
}
}
sum -= num;
return sum == num;
}
263. 丑数
??丑数的定义是:只包含质因数2,3,5的数,1也被定义为丑数。 ??知道了这个条件,我们就可以思考,该如何去判断丑数。 分析:
- 要判断一个数是否能被2,3,5整除,只需要分别对这三个数进行取模。
- 所以我们可以定义一个数组d[] = {2, 3, 5},当n % d[ i ] == 0时,n /= d[ i ],直到n不能在被d[ i ]整除。
- 如果最终结果n = 1,那么就说明,n是由质因数2,3,5组成的。
代码如下:
bool isUgly(int n){
if(n < 1){
return false;
}
int d[] = {2, 3, 5};
for(int i = 0; i < 3; i++){
while(n % d[i] == 0){
n /= d[i];
}
}
return n == 1;
}
|