如何制作一个程序,找出1到100万之间的幸福数字

时间:2015-11-28 22:08:36

标签: c++ numbers

我正在尝试编写代码来计算1到100万之间的正确数字。然而,最终结果是我的输出窗口保持空白并继续运行,否则我得到0的输出,这是不正确的。有人有什么建议吗?这是我正在使用的代码:

从主要功能:

for (x = 2; x < 10; x++)                 
{
    if(is_happy(x) == 1)
        happy_number++;
}

  cout << "There are " << happy_number << " happy prime numbers between 1 and 1 million" << endl;

注意:happy_number以值0开始;

然后是计算数字是否满意的函数:

int is_happy(int x)
{
    int y;
    int ans = 0;
    while (x > 0)
    {
        y = x%10;
        ans += pow(y, 2.0);
        x = x/10;
        ans += pow(x, 2.0);
    }

    return ans;
 }

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我使用的是维基百科。 Happy number

名为isHappy的函数计算参数是否满意。如果参数是负整数,我不确定它是否正常。

你问:

  

如何制作一个程序,找出1之间的幸福数字   和100万

函数int happyNumbersBetween1_1000000()返回1到1 000 000之间的幸福数字。

0

答案 1 :(得分:1)

在计算幸福数字时,你的逻辑有点偏差。这是一个持续到达include_once $path; 或无限循环的循环。幸福数字达到1,而不满意的数字达到1并永远循环。

4

您应该像这样使用它:

bool is_happy(int x) //Let the function determine if the number is happy
{
    if (x <= 0) //Discrimination! Only positive numbers are allowed to experience joy
        return false;
    int result;
    while (x != 1) //If x == 1, it is a happy number
    {
        result = 0;
        while (x) //Until every digit has been summed
        {
            result += (x % 10) * (x % 10); //Square digit and add it to total
            x /= 10;
        }
        x = result;
        if (x == 4) //if x is 4, its a sad number
            return false;
    }
    return true;
}

编辑:你可以看到它有效here