我把这道题想的是把 int转换成String 然后再从头、从尾循环,一一对比。很笨很麻烦的方法。
看了别人的方才恍然大悟,原来可以直接将数字翻转。把这道题分解成求逆序数
public class Main {
public static int rev(int n)
{
int newn=0;
while(n!=0)
{
newn=newn*10+n%10;
n=n/10;
}
return newn;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
/* for(int n=25;n<256;n++)
{
int nn=n*n;
String s=String.valueOf(nn);
int flag=1;
int i = 0,j = 0;
while(i+j<=s.length())
{ for( i=0;;i++)
{
for( j=s.length();;j--)
{
if(s.charAt(i)!=s.charAt(j))
flag=0;
}
}
}
if(flag==1)
System.out.println(n);
}*/
int i;
for(i=1;i<256;i++)
{
if(i*i==rev(i*i))
System.out.println(i);
}
}
}
而通过的运行结果也说明 1 2 3,这类平方数是一位数的数也符合要求