2016-11-13 57 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))