关于快乐数的算法

本人在面试某国企的过程中被要求用手机编写快乐数算法,由于当时嫌弃麻烦所以就没写。后来在家呆着无聊想起来就写了个例子。

快乐数的概念:在给定的进位制下,该数字所有数位(digits)的平方和,得到的新数再次求所有数位的平方和,如此重复进行,最终结果必为1。

例子:2 8 → 2²+8²=68 → 6²+8²=100 → 1²+0²+0²=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; }

        }
			

  

转载于:https://www.cnblogs.com/Schme/p/9332855.html

你可能感兴趣的:(关于快乐数的算法)