要求java
- 各个一位数不能是1
- 只能填写1~9的数字
- 方框里的数字不能重复
首先是将每一个一位数和两位数都当作一个数,咱们能够使用a,b,c,d,e,f六个数代替算法
设置for循环,枚举a,b,c,d,e,f这六个数函数
a 范围2~9(由于是不容许各个一位数为1)code
b 范围2~9(同理)blog
c 范围10~99for循环
d 范围10~99循环
e 范围10~99方法
f 范围2~9im
这里须要注意的是c和d的枚举,设置的时候有些巧妙,因为d是被除数,因此咱们优先改变的应该是c
,并且,由题目咱们能够猜想出,这里的c和d应该是能够整除的,因此咱们能够将c做为d的倍数增长static
for(d=10;d<=99;d++)
for(c=d;c<=99;c=c+d)
乘方函数能够使用java中Math.pow函数
设置一个函数判断式子是否成立,成立则返回true,不成立则返回false
设置一个函数判断式子中的各个数是否包含0,是否重复,返回类型也是一个boolean类型
上述两个函数返回的数值均是true则能够判断a,b,c,d,e,f是知足要求的数字,打印出来(或者是使用整除和取余的方法一个个数的取出)
int a,b,c,d,e,f; for(a=2;a<=9;a++){ for(b=2;b<=9;b++){ for(d=10;d<=99;d++){ for(c=d;c<=99;c=c+d){ for(e=10;e<=99;e++){ for(f=2;f<=9;f++){ if(jisuan(a, b, c, d, e, f)){ if(isChongfu(a, b, c, d, e, f)){ System.out.println(a+","+b+","+c+","+d+","+e+","+f); } } } } } } } } } public static boolean jisuan(int a,int b,int c,int d,int e,int f){ return (Math.pow(a, b) + c/d )==e*f; } public static boolean isChongfu(int a,int b,int c,int d,int e,int f){ int[] flag = new int[9]; flag[0]=a; flag[1]=b; flag[2]=c/10; flag[3]=c%10; flag[4]=d/10; flag[5]=d%10; flag[6]=e/10; flag[7]=e%10; flag[8]=f; for(int i=0;i<flag.length;i++){ if(flag[i]==0){ return false; } } for(int i=0;i<flag.length-1;i++){ for(int j=i+1;j<flag.length;j++){ if(flag[i]==flag[j]){ return false; } } } return true; }