编程求一个9位的整数,数字由1-9构成,每个数字只能出现一次。并且这个整数的前一位能被1整除,前两位能被2整除, ......以此类推,前九位能被9整除。

该博客提出了一个编程问题:寻找一个9位整数,其数字由1到9构成且各不相同,且从前一位到前九位分别能被1到9整除。作者分析了问题,指出最小和最大可能的数字,并提出通过冒泡排序检查数字的唯一性。接着,通过循环检查整除性,最终找到符合条件的答案381654729。
摘要由CSDN通过智能技术生成

思路分析:9位的整数,由不重复的1~9组成,注意分析出没有0。

每个数字只出现一次,那么最小的数是123456789,最大的数是987654321。

既然不重复,那么把每一位获取,比较9个数字不同即可。怎样比较,9个数字用a!=b&&a!=c......可不行,

想想把获取的数字放到数组里面,通过冒泡排序法比较数字是否有重复即可。不要说冒泡排序只能用来排序......

改良下代码就可以用了。

不为0且数字都不一样两个条件满足后,继续进行判断。

用一个循环判断前两位被2整除,前三位被3整除,......,前九位被9整除。条件满足输出,结束。

答案:381654729

详细代码如下:

public class testLargeNumber {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] wei = new int[9]; //每一位
		int flag;
		int i, num,cnt=0,n,sum=0;//统计不相等和不为0的数量

		for (i = 123456789; i <= 987654321; i++) {
			num = i; //初始化num,如果直接用i,后面会变,小心!
			flag = 0;//用于判断是否满足条件
			// 计算每一位
			for (int j = 0; j < 9; j++) {
				wei[j] 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值