Java利用for循环找出四位整数 abcd 中满足 (ab+cd)(ab+cd)=abcd 的数(Ziph)

@Java

大家好,我是Ziph!

题目:

(for循环)找出四位整数 abcd 中满足 (ab+cd)(ab+cd)=abcd 的数

方案1:

思路1:
利用普通for循环思路计算
既然是4位数,那么4位数的开始就是1000,结束是9999。这就是for循环中要用的数字参数,abcd即是1000(开始)。那么还得需要满足题意,就得创建两个变量了就是ab、cd。ab、cd在abcd中得到就类似得到个位、十位、百位了吧,之后满足 (ab+cd)(ab+cd)=abcd 条件即可打印abcd的值。

public class TestPlan {
	public static void main(String[] args) {
		for (int abcd = 1000; abcd <= 9999; abcd++) {
			int ab = abcd / 100;//类似求个位、十位、百位的案例
			int cd = abcd % 100;//如果还不知道怎么求,可以把ab、cd拆开看就相当于是个位和十位了
			if ((ab + cd) * (ab + cd) == abcd) {//满足条件
				System.out.println(abcd);
			}
		}
	}
}

方案2(优化版本):

思路2:
利用完全平方数计算
先看题干,题干要求满足 (ab+cd)(ab+cd)=abcd 这个条件,而条件中两个(ab + cd)相乘,我们可以把这个整体看成一个数定义变量为num,也就是说利用num的平方来求abcd。而abcd这个数就被称为完全平方数。(8 * 8 = 64,9 * 9 = 81 而64、81这样的数就被称为完全平方数)那么我们现在找离1000最近的完全平方数就是我们很熟悉的32 * 32 = 1024,100 * 100 = 10000,我们取99 * 99的99作为循环中的另一个参数。这样32和99之间计算机参与判断的数就只有67个,比起从1000到9999少判断了很多吧,大大提高了计算机的执行效率,优化了我们的编码,提升了你的逼格,岂不是一箭三雕!

public class TestPlan {
	public static void main(String[] args) {
		for (int num = 32; num <= 99; num++) {
			int abcd = num * num;
			int ab = abcd / 100;
			int cd = abcd % 100;
			if (ab + cd == num) {//因为我们当初把(ab + cd)这个整体看成了num
				System.out.println(abcd);	
			}
		}
	}
}

执行结果为:2025、3025、9801
在这里插入图片描述
有问题请留言回复!

拜拜

发布了10 篇原创文章 · 获赞 21 · 访问量 3866

猜你喜欢

转载自blog.csdn.net/weixin_44170221/article/details/104233443
今日推荐