1.首先定义一个转换函数专门用来将各个位上的数平方之后再相加。
2.1肯定是快乐数,对于不是1的数持续用转换函数的条件是其值大于9,也就是说跳出循环的条件是m <= 9;
#include<stdbool.h>
int change(int x){ //自定义转化函数
int sum = 0;
while( x > 0){
int j = x % 10;
sum = sum + j*j;
x = x / 10;
}
return sum;
}
bool happynum(int n ) {
if(n == 1)
return true; //把1单独放一边
int m = 0;
while(n > 1){ //大于1的数就转换
m = change(n); //转换之后小于10的数就不继续转换了,直接收网判结
while(m > 9)
{ //只有大于9的数才需要继续转换,直到最后结果小于等于9才结束循环
m = change(m); //循环转换
}
break; //跳出转换的循环
}
//开始判结
if(m == 1)
return true;
else
return false;
}

京公网安备 11010502036488号