2012年10月19日 星期五

巧合數計算


3025這個數字有個巧合,如果將這數字看成字串,將其分為兩半,每一半也都是一
個十位數,亦即30和25,則其和平方
(30+25)^2 = 3025
又變成原來的數字了。本題是找出這種類似的巧合數字出來,程式要輸入一個
位數(2、4、6、或8),然後找出該位數的所有類似巧合的數字。例如4位數,從
0000到9999。請注意,0也要算在內,也就是說0001也等於(00+01)^2,也是4位數
中的巧合數。
例如:
輸入位數 : 2
輸出 : 00
01
81

Java解法


import javax.swing.JOptionPane;
import java.text.DecimalFormat;

public class Midterm_3 {

public static void main(String[] args) {

String m;
int n = 0;
int sum = 0;
int chksum = 0;
String msg = "";

do {
m = JOptionPane.showInputDialog("請輸入測試位數(偶數且為個位數)");
n = Integer.valueOf(m);
} while (n <= 0 || n > 9 || n % 2 == 1);

switch (n) {
case 2:
DecimalFormat f2 = new DecimalFormat("00");
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
sum = (int) Math.pow(i + j, 2);

if (sum == chksum)
msg = msg + f2.format(sum) + "\n";
chksum++;
}

}
JOptionPane.showMessageDialog(null, "巧合數為 :" + "\n" + msg, "查詢結果",
1);
break;
case 4:
DecimalFormat f4 = new DecimalFormat("0000");
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
sum = (int) Math.pow(i + j, 2);

if (sum == chksum)
msg = msg + f4.format(sum) + "\n";
chksum++;
}

}
JOptionPane.showMessageDialog(null, "巧合數為 :" + "\n" + msg, "查詢結果",
1);
break;
case 6:
DecimalFormat f6 = new DecimalFormat("000000");
for (int i = 0; i < 1000; i++) {
for (int j = 0; j < 1000; j++) {
sum = (int) Math.pow(i + j, 2);

if (sum == chksum)
msg = msg + f6.format(sum) + "\n";
chksum++;
}

}
JOptionPane.showMessageDialog(null, "巧合數為 :" + "\n" + msg, "查詢結果",
1);
break;
case 8:
DecimalFormat f8 = new DecimalFormat("00000000");
for (int i = 0; i < 10000; i++) {
for (int j = 0; j < 10000; j++) {
sum = (int) Math.pow(i + j, 2);

if (sum == chksum)
msg = msg + f8.format(sum) + "\n";
chksum++;
}

}
JOptionPane.showMessageDialog(null, "巧合數為 :" + "\n" + msg, "查詢結果",
1);
break;
}
}

}


沒有留言:

張貼留言