打印出前888个快乐号码

时间:2017-02-13 20:51:40

标签: c++ increment iostream

所以我有这个功能来检查一个数字是否是一个快乐的数字。它返回true或false。

if letter in punctuations

它按预期工作,当X是幸福数字时返回true。

我要做的是打印前888个满意的数字。

我尝试设置一个while循环,其中有一个递增的整数b

bool is_happy(int x) //Let the function determine if the number is happy
{

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;
}

但是,我不知道如何包含和增加X,每当我尝试包含并增加x时,它只会打印出第一个快乐数字888次。

我的问题是尝试增加x,每当它达到一个快乐的数字时,它输出那个快乐的数字,然后增加b。我只能使用iostream而不能使用其他库。

编辑:道歉不明白!

我正在尝试打印出前888个快乐号码,我有检查号码是否满意的功能。我正在尝试创建一个循环,打印出使函数返回True的前888个数字。

非常感谢!

3 个答案:

答案 0 :(得分:1)

尝试遵循这一逻辑。

首先,为计数器创建一个变量。我们说int counter = 0;

然后,做:

while ( counter < 888 )
{

  if ( number == /*happy condition*/)
  {
    //do somehting
    counter++;
  }


  else
  {
    // :(
  }

}

答案 1 :(得分:0)

您需要将b传递给您的函数,并保留一些幸福数字:

  int b = 0;
  int count = 0;
  while( count < 888 ) {
      if (  is_happy( b ) ) {
         // do something
         count++;
      }
      b++;
  }

答案 2 :(得分:0)

您需要分别增加两个数字:

int b = 0;
for (int x = 1; b < 888; x++) {
    if (is_happy(x)) {
        // print
        b++;
    }
}