Java 同构数的问题

Python025

Java 同构数的问题,第1张

public class Wednesday {

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