public static void main(String[] args) {
long i,j,k
k=10
for (i=1i<=1000i++){
if (i==k)
{
k*=10
} //k是100了吧
j=i*i //1*1 2*2 3*3 4*4 5*5 6*6等等。
if((j%k)==i)// j=1除以k=100的余数是1 等于i自己
{
System.out.println(i+" "+j)
}
}
}
}
public static void main(String args[]){
long i,ji,kk=100
for(i=1i<=1000i++) {
ji=i*i
if((ji%k)==i) {
System.out.println(i+" "+ji)
}
}
}
}
1)你的代码中k的值一直是100,没有概念,而人家的代码中,k的值先是10,所以在这之前,
i = 5时:i * i % k = 5 * 5 % 10 = 5 == i,打印
i = 6时:i * i % k = 6 * 6 % 10 = 6 == i,打印
2)当i的值变为10时,k的值变为了100:
i = 25时:i * i % k = 25 * 25 % 100 =25 == i, 打印
i = 76时:i * i % k = 76 * 76 % 100 = 76 == i, 打印
你只是考虑了中中情况
3)当i = 100,时,k = 100,此时k的值变为:k * k = 10000
i = 376时:i * i % k =376 * 376 % 10000 = 141376 % 10000 = 376 == i,打印
i = 625时:i * i % k =625 * 625 % 10000 = 390625 % 10000 = 625 == i,打印
1 - 100 之间的同构数思想
枚举1-100的自然数,检验他平方后末尾是否包含本身。
程序
int k=10
for (int i=1i<=100i++){
if (i >= k) k =k * 10
int temp = (i*i) % k
if (i == temp)
System.out.println(i)
}
输出
1
5
6
25
76