Java实现同构数

同构数:正整数n若是它平方数的尾部,则称n为同构数。

例如:5的平方数是25,且5出现在25的右侧,那么5就是一个同构数。(转自360百科)

public class TongGou1{
	 /**
     * 主要是根据for循环来进行数的增加和if条件语句
     * 执行速度要比根据String.endsWith(String suffix)方法快一点点
     * 通过取余运算进行判断,结构更加复杂
     * */
	public static void main(String[] args){
		int i,j,k;//需要更大范围的同构数可以定义为long型
		k=10;
		for(i = 1;i < Integer.MAX_VALUE - 1;i++){
			if(i == k){
				k *= 10;
			}
			j = i * i;
			if((j % k) == i){
				System.out.println(i + "     " + j);
			}
		}
	}
}
Output:
1    1
5    25
6    36
25    625
76    5776
376    141376
625    390625
9376    87909376

我还看到了第二种思路,也让自己学会了新姿势

public class TongGou2{
		/**
         * 循环,1~Integer.MAX_VALUE
         * sq : i ^ 2 对应的字符串
         * ii : i 对应的字符串
         * 利用 String.endsWith(String suffix) 完成后缀的比对
         * 缺点:效率比较低
         */
	public static void main(String[] args){
		String si = "";
		String sj = "";
		for(long i = 1; i < Integer.MAX_VALUE-1; i++){
			si = String.valueOf(i * i);
			sj = String.valueOf(i);
			if(si.endsWith(sj)){
				System.out.println(sj + "    " + si)
			}
		}
	}
}
Output:
1 1
5 25
6 36
25 625
76 5776
376 141376
625 390625
9376 87909376
90625 8212890625
109376 11963109376
890625 793212890625
2890625 8355712890625
.......
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值