在范围[a,b]之间获得完美数字的所有完美广场的最佳方式是什么? 完美的数字完美广场是所有数字完美广场的广场。 我没有如下在一定范围内完美数字的完美广场
for j=a to b
do if(checkPerfectSquare(j) && checkPerfectDigit(j))
then ctr++
print ctr
int checkPerfectSquare(n)
{
if n<0
return 0
root=round(sqrt(n))
return (n==root*root)
}
int checkPerfectDigit(n)
{
while n>0
do rem=n%10
n=n/10
if(!checkPerfectSquare(rem))
return 0
return 1
}
这是有趣的伪代码,但你真正想实现这一点?如果是的话,你的问题是什么?另外,如果你正在使用'int',那么你不需要四舍五入。 – UnholySheep
你有一些问题......在'checkPerfectSquare()'中,你有'i'作为参数,但在检查它之后,你使用'n'而不是'i'。在'checkPerfectDigit()'中,根本不使用参数'j'。你不应该写C假定'i'和'j'是'int';这在C89标准制定之前是陈旧的。 –
我也相信在'checkPerfectDigit'中有一个无限循环,因为n永远不会被改变? – UnholySheep