关于快乐数的算法
Posted schme
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于快乐数的算法相关的知识,希望对你有一定的参考价值。
本人在面试某国企的过程中被要求用手机编写快乐数算法,由于当时嫌弃麻烦所以就没写。后来在家呆着无聊想起来就写了个例子。
快乐数的概念:在给定的进位制下,该数字所有数位(digits)的平方和,得到的新数再次求所有数位的平方和,如此重复进行,最终结果必为1。
例子:2 8 → 22+82=68 → 62+82=100 → 12+02+02=1
以下是代码:
private bool IsHappyNum(int num, List<int> lastNum) { if (lastNum == null) { lastNum = new List<int>(); } bool mark = true; double sum = 0; do { sum += Math.Pow(num % 10, 2); if (num / 10 == 0) { mark = false; } num = num / 10; } while (mark); if (lastNum.Contains(Convert.ToInt32(sum))) { return false; } lastNum.Add(Convert.ToInt32(sum)); if (sum != 1) { return IsHappyNum(Convert.ToInt32(sum), lastNum); } else { return true; } }
以上是关于关于快乐数的算法的主要内容,如果未能解决你的问题,请参考以下文章