vault backup: 2023-09-29 15:58:43
This commit is contained in:
@ -499,13 +499,28 @@ let is_perfect n =
|
||||
if n < 1 then
|
||||
invalid_arg "is_perfect: undefinded for n < 1"
|
||||
else
|
||||
let rec perfect n d =
|
||||
if n mod d = 0 then
|
||||
else if d*d > n then
|
||||
true
|
||||
else
|
||||
perfect (d + 1)
|
||||
in perfect n d;;
|
||||
let rec perfect d =
|
||||
if d = n then
|
||||
1
|
||||
else if n mod d > n then
|
||||
d + perfect (d + 1)
|
||||
else
|
||||
perfect (d + 1)
|
||||
in perfect d;;
|
||||
|
||||
(*v2*)
|
||||
let is_perfect n =
|
||||
if n < 1 then
|
||||
invalid_arg "is_perfect: undefinded for n < 1"
|
||||
else
|
||||
let rec perfect d =
|
||||
if d*d >= n then
|
||||
1 + (if d*d = n then d else 0)
|
||||
else if n mod d > n then
|
||||
d + n/d + sumd (d+1)
|
||||
else
|
||||
perfect (d + 1)
|
||||
in perfect d;;
|
||||
```
|
||||
## Hanoi
|
||||
```Ocaml
|
||||
|
Reference in New Issue
Block a user