【发布时间】:2015-11-28 22:08:36
【问题描述】:
我正在尝试编写代码来计算 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;
}
有什么建议吗?
【问题讨论】:
-
您最多迭代 10 次;
ans将是2..9的平方,而不是==1.. -
对于像
is_happy这样的函数,返回一个布尔值可能是最有效的,因为答案应该只有true或false。此外,使用==1来检查 true 通常是一个坏主意(如这里),因为您没有解决>1。 -
感谢您的帮助。