1. 程式人生 > >四方定理 數論中有著名的四方定理:所有自然數至多隻要用四個數的平方和就可以表示。

四方定理 數論中有著名的四方定理:所有自然數至多隻要用四個數的平方和就可以表示。

/*	四方定理
 數論中有著名的四方定理:所有自然數至多隻要用四個數的平方和就可以表示。
 我們可以通過計算機驗證其在有限範圍的正確性。
 對於大數,簡單的迴圈巢狀是不適宜的。下面的程式碼給出了一種分解方案。

 請仔細閱讀,填寫空缺的程式碼(下劃線部分)。
 注意:請把填空的答案(僅填空處的答案,不包括題面)存入考生資料夾下對應題號的“解答.txt”中即可。
 直接寫在題面中不能得分。
 */
import java.util.Scanner;

public class 四方定理 {
	public static int f(int n, int a[], int idx) {
		if (n==0) // 填空1
			return 1;
		if (idx == 4)
			return 0;

		for (int i = (int) Math.sqrt(n); i >= 1; i--) {
			a[idx] = i;

			if (f(n-i*i, a, idx+1) == 1) // 填空2
				return 1;
		}
		return 0;
	}
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		for (;;) {
			int number;
			System.out.printf("輸入整數(1~10億):");
			number = scan.nextInt();
			int a[] = { 0, 0, 0, 0 };
			int r = f(number, a, 0);
			System.out.printf("%s: %d %d %d %d\n", r==1?"有結果":"無結果", a[0], a[1], a[2], a[3]);
		}
	}
}
執行結果:
輸入整數(1~10億):234
有結果: 15 3 0 0
輸入整數(1~10億):4
有結果: 2 0 0 0
輸入整數(1~10億):0
有結果: 0 0 0 0
輸入整數(1~10億):-1
無結果: 0 0 0 0
輸入整數(1~10億):