在範圍[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