题目介绍:
幸福的数字是由以下过程定义的数字:从任何正整数开始,将数字替换为数字的平方和,并重复该过程,直到数字等于1,例如19是幸福数字。给定一个数,计算是不是幸运数。
思路:
while 该位上的数不为0{
1.计算给定数的每位上的数
2.计算其每位数上的平方和
}
如果平方和不为1,返回重新计算该平方和的各个位置上数的新的平方和,1000次后还不为1,可能不是幸运数;
如果平方和为1,return true,是幸运数字。
核心代码如下:
#include <iostream>
using namespace std;
bool isHappy(int n){
bool bol = false;
int count = 0;
while(n != 1 && count < 1000){
int num = 0;
while(n != 0){
num += (n % 10) * (n % 10);
n /= 10;
}
n = num;
cout << "当前num为: " << n << endl;
count++;
}
if(n == 1)
bol = true;
return bol;
}
int main()
{
int n;
cin >> n;
if(isHappy(n))
cout << n << " is happy num." << endl;
else
cout << n << " is't happy num." << endl;
return 0;
}