题目: 编写一个算法来判断一个数n是不是快乐数。
快乐数的定义:
     对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
     然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
     如果这个过程 结果为 1,那么这个数就是快乐数。
     如果 n 是 快乐数 就返回 true ;不是,则返回 false 。
 
 示例 1:
     输入:n = 19
     输出:true
     
 示例 2:
     输入:n = 2
     输出:false
示例 3:
     输入:n = 5
     输出:false
解析: 使用快指针和慢指针,如果快指针追上了慢指针,说明进入了循环
如果循环值为1,则为快乐数。
示例源码:
// Len_IsHappy.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
int NextData(int n)
{
	int data = 0;
	while (n > 0)
	{
		int ge = n % 10;
		data += ge * ge;
		n = n / 10;
	}
	return data;
}
bool isHappy(int n) 
{
	int slow = n;
	int fast = n;
	do{
		slow = NextData(slow);
		fast = NextData(NextData(fast));
	} while (slow != fast);
	return slow == 1;
}
void PrintStr(int n, bool bResult)
{	
	// n
	printf("\nn = %d", n);
	// result
	printf("\nbResult = %s\n", (bResult != 0) ? ("true") : ("false"));
	}
int _tmain(int argc, _TCHAR* argv[])
{
	int n = 19;
	bool bResult = isHappy(n);
	PrintStr(n, bResult);
	
	n = 2;
	bResult = isHappy(n);
	PrintStr(n, bResult);
	n = 5;
	bResult = isHappy(n);
	PrintStr(n, bResult);
	return 0;
}
执行结果:




















