编写一个算法来判断一个数 n
是不是快乐数。
「快乐数」 定义为:
- 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
- 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
- 如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n
是 快乐数 就返回 true
;不是,则返回 false
1 class Solution { 2 public: 3 int pingfanghe(int n) 4 { 5 int sum = 0; 6 while (n != 0) 7 { 8 int yushu = n % 10; 9 sum = sum + yushu * yushu; 10 n = n / 10; 11 } 12 return sum; 13 } 14 bool isHappy(int n) { 15 set<int> sums; 16 int sum = 0; 17 //每一次循环查找sums 看是否有sum 如果有说明进入循环 返回错误 如果没有则插入 直到插入值为1 18 while (n != 1) 19 { 20 if (sums.find(n) == sums.end()) 21 { 22 sums.insert(n); 23 n = pingfanghe(n); 24 } 25 else 26 { 27 return false; 28 } 29 } 30 return true; 31 } 32 }; 33 class Solution { 34 public: 35 int pingfanghe(int n) 36 { 37 int sum = 0; 38 while (n != 0) 39 { 40 int yushu = n % 10; 41 sum = sum + yushu*yushu; 42 n = n / 10; 43 } 44 return sum; 45 } 46 bool isHappy(int n) { 47 int i = 0; 48 while (n != 1) 49 { 50 n = pingfanghe(n); 51 i++; 52 if (i == 10000) 53 { 54 return false; 55 } 56 } 57 return true; 58 } 59 };
标签:10,202,return,int,yushu,sum,sums,快乐 From: https://www.cnblogs.com/lihaoxiang/p/17165622.html