因此。我写了一个片段来执行一个程序,以确认一个数字是否是一个快乐的数字。但除了10的权力之外,它不适用于任何数字。你能指出问题吗? 是的,它编译得很好。
while(true)
{
while (num>0)
{
dig=num%10;
sum=sum+(dig*dig);
num=num/10;
}
num=sum;
if(num==1)
System.out.println("Happy");
break;
}
} }
答案 0 :(得分:1)
您的算法似乎存在缺陷。首先,你没有发现不愉快的数字。
来自Wikipedia's page on happy numbers:
一个快乐的数字由以下过程定义:从任何正整数开始,将数字替换为其数字的平方和,并重复该过程,直到数字等于1(它将保持不变),或者它在一个不包括1的循环中无休止地循环 1.这个过程以1结尾的那些数字是幸福的数字,而那些不以1结尾的数字是不愉快的数字(或悲伤的数字)。
(强调我的。)
翻译:你必须重复这个过程,直到你最终得到一个你认为是循环一部分的值。 Iff值为1,数字很高兴。如果不是,并且您没有检测到,那么您将永远循环。
答案 1 :(得分:1)
最重要的是,您没有将总和重置为零。
此外,任何不满意的号码都会无限循环。
答案 2 :(得分:0)
使用此功能会找到快乐,悲伤的数字
#include <cmath>
long fun(long);
long func(long x)
{
long sum=0,rem;
while(x>0)
{
num=x%10;
sum=sum+pow(rem,2);
x=x/10;
}
if(sum>=10)
func(sum);
else
return sum;
}