说实话,如果不看别人的解答的话,这道题我也是没有思路,不知道该循环几次,也不知道循环的终止条件,后来才知道,【2-6】这个范围内的数字都不是happy number
所以就有了终止条件,n>6就是终止条件,当n跳进这个范围内的时候就终止循环,最后就能判断是否是happy number了
#include<stdio.h> #include<stdlib.h> bool isHappy(int n) { while(n>6) { int sum=0; while(n) { sum+=(n%10)*(n%10); n/=10; } n=sum; } return n==1; } int main() { int m; while(scanf("%d",&m)!=EOF) { bool flag=isHappy(m); if(flag) printf("yes\n"); else printf("no\n"); } return 0; }
时间: 2024-10-28 07:57:43