0votos

Raices N de numeros M en Haskell

por josejuan hace 4 años

Desarrollando la serie de los cuadrados perfectos para calcular el siguiente (en base al anterior) con sólo un par de sumas.

Sacar las posibles raizes de un numero

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{- 
 
    Los cuadrados perfectos pueden escribirse como: 
     
        N0 = 0 
        N1 = 1 
        N2 = 2 + 2 
        N3 = 3 + 3 + 3 
        ... 
        Ni = Sum { i }k=1..i 
        ... 
     
    Entonces, desarrollando la serie 
     
        Ni+1 = Sum { i+1 }k=1..i+1 
 
             = Sum { i+1 }k=1..i + i+1 
              
             = Sum { i }k=1..i + Sum { 1 }k=1..i + i+1 
              
             = Ni + i + i + 1 
 
    Por lo tanto 
-} 
 
raiz :: Int -> Maybe Int 
raiz n = let r s i | s > n     = Nothing 
                   | s == n    = Just i 
                   | otherwise = r (s + i + i + 1) (i + 1) 
         in  r 0 0 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.