要求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; }