【问题描述】具有下面性质的数a称为"同构数":设b是a的平方,a与b的低若干位相同。例如,5是25的同构数,25是625的同构数.编程序满足如下要求:
输入两个整数a,b (0<=a, b<=99),找出a、b之间全部的同构数。
【输入形式】控制台输入0-99之间的两个整数a和b.
【输出形式】控制台上按照由小到大的顺序输出所有同构数.每一个整数占一行.
【样例输入】0 30
【样例输出】
0
1
5
6
25
【样例说明】在0-30之间的同构数有0, 1, 5, 6, 25.

代码说明

老师真的太太太仁慈了,这题也没有需要学习的新知识点。
算法方面该题只需通过遍历a-b之间的数,然后判断是否满足同构条件即可,需要注意的是,要根据a的位数,取b得最后若干位进行比较。
代码如下:

package work3;
import java.util.Scanner;

public class tonggou {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int i = input.nextInt();
		int j = input.nextInt();
		int tem;
		
		for(int k =i;k<j;k++) { //从i开始循环直至k,这里不太严谨,题目没有给出是否包含j,在希冀运行也没问题
			tem = k*k; 
			if(k<10) {  //若k为个位数
				if(tem%10 == k)  //取tem的个位
					System.out.println(k);
			}
			else {  //由于这里b<=99,故else即为k为两位数
				if(tem%100 == k)
					System.out.println(k);
			}
		}
	}
}

运行结果如下:
面向程设作业的JAVA学习——同构数_新知识