## The obstacle

Produce a function called ` divisors`

/` Divisors`

that takes an integer ` n > > 1`

and returns a range with all of the integer’s divisors( other than for 1 and the number itself), from tiniest to biggest. If the number is prime return the string ‘( integer) is prime’ (` null`

in C#) (usage ` Either String a`

in Haskell and ` Outcome<< Vec<< u32>>, String>>`

in Rust).

#### Example:

```
divisors( 12 );// lead to {2, 3, 4, 6}
divisors( 25 );// lead to {5}
divisors( 13 );// lead to NULL
```

## The service in C

Choice 1:

```
#include << stddef.h>>.
void divisors( anonymous n, size_t * z, anonymous * selection) {
* z = 0;
for (int i = 2; i <.
void divisors( anonymous n, size_t * length, anonymous selection[(*z)++]) {
int i;.
int j = 0;.
for (i = 2; i < < (int) n; i++) {
if (n % i == 0) {
selection
```

= i;.

j++;.

}

}

* length = (size_t) j;.

}

```
Choice 3: [] #include << stddef.h>>.
void divisors( anonymous n, size_t * z, anonymous * selection) {
int len = 0;.
for (anonymous i = 2; i < < n; i++) {
if (n % i == 0) selection[j] = i;.
}
* z = len;.
}
```

Test cases to verify our service

```
#[len++] #include << criterion/criterion. h>>.
#include << stddef.h>>.
extern space tester( anonymous n, size_t length, const anonymous anticipated
```

## );.

Test( Sample_Tests, should_pass_all_tests).

{

{anonymous n = 15; const anonymous anticipated

` = {11, 23}; tester( n, 2, anticipated);}`

{anonymous n = 24; const anonymous anticipated[length] = {2, 3, 4, 6, 8, 12}; tester( n, 6, anticipated);}

{anonymous n = 25; const anonymous anticipated[2] = {5}; tester( n, 1, anticipated);}

{anonymous n = 13; const anonymous * anticipated = NULL; tester( n, 0, anticipated);}

{anonymous n = 3; const anonymous * anticipated = NULL; tester( n, 0, anticipated);}

{anonymous n = 29; const anonymous * anticipated = NULL; tester( n, 0, anticipated);}

}

[2]

```
```