2016-11-13 65 views
0

我嘗試實現一個函數,它計算方案中具有自然數n的拉格朗日四方定理。不過,我沒有任何想法做到這一點...有人可以給我一個例子/代碼嗎?方案 - 拉格朗日的四方定理

例如,a^2 + b^2 + c^2 + d^2 = n,其中n是函數的輸入。

回答

2

你可以用兩種功能(主要&輔助)做到這一點:

如果n爲自然,(拉格朗日N)給出了所有的四胞胎(A,B,C,d),如清單^ 2 + b^2 + c^2 + d^2 = n。

(define lagrange 
    (lambda (n) 
    (lagrange-aux 4 0 n))) 

(define lagrange-aux 
    (lambda (size m sum) 
    (cond ((and (zero? size) (zero? sum)) '(())) 
      ((or (zero? size) (> (* m m) sum)) '()) 
      (else (append (map (lambda (x) (cons m x)) 
          (lagrange-aux (- size 1) 0 (- sum (* m m)))) 
         (lagrange-aux size (+ m 1) sum)))))) 

實施例:

(lagrange 13) ==> 
((0 0 2 3) (0 0 3 2) (0 2 0 3) (0 2 3 0) (0 3 0 2) (0 3 2 0) 
(1 2 2 2) (2 0 0 3) (2 0 3 0) (2 1 2 2) (2 2 1 2) (2 2 2 1) 
(2 3 0 0) (3 0 0 2) (3 0 2 0) (3 2 0 0))