首页 > 解决方案 > c# 判断数字是否快乐

问题描述

我试图了解如何找到数字是否是快乐数字,我知道我需要检查个位数字和最高数字位置的数字是否大于中间数字。`示例:给定数字:63240 单位:6 最高位置的数字:0 是否都大于 3 和 2 和 4(中间)?是结果:真(对于这种情况)

the quation is: write a program that get a number from user, the program will print if the given number from the user is a happy number or not

我知道如何找到单位和最高数字位置,但是让堆栈弄清楚如何使用中间的数字来找到答案..

请注意,我们学过的唯一一门这么胖的课是数学,(甚至不是字符串是的)我们也学过一会儿和一会儿,但到目前为止什么都没有。

我也知道,为了遍历给定数字中的所有数字,我需要使用 while 循环,但我不知道如何使用它才能使用它们来得到答案。

到目前为止我的代码:

int number;
int units;
int highestDigitLoc; 

bool isHappyNumber = true;
int count = 0;

Console.WriteLine("enter a number:");
number = int.Parse(Console.ReadLine());

while(number > 0)
{
    count++;

    units = number % 10;
    highestDigitLoc = number / 10;
}

谢谢

标签: c#algorithmlogic

解决方案


此链接Happy Number以简单的方式解释了's 是什么。基本上你必须不断对数字中每个数字的平方求和,直到结果等于 1。这个过程可以无限期地进行,但幸运的是,我们确定如果总和等于 4,它永远不会产生快乐数字. 因此,我们可以做到以下几点:

private static bool IsHappy(int n)
{
    if (n == 1)
        return true;
    else if (n == 0 || n == 4)
        return false;
    else
        return IsHappy(SumDigitSquares(n));
}

private static int SumDigitSquares(int n)
{
    if (n < 10)
        return n * n;
    else
        return SumDigitSquares(n % 10) + SumDigitSquares(n / 10);
}

用法:

bool result = IsHappy(63240); //false

推荐阅读