C/C++ 快乐数: 编写一个算法来判断一个数n是不是快乐数
2023-12-13 11:25:01
题目: 编写一个算法来判断一个数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;
}
执行结果:
文章来源:https://blog.csdn.net/wendyWJGU/article/details/134924679
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!