diff options
Diffstat (limited to 'common/utils.h')
| -rw-r--r-- | common/utils.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/common/utils.h b/common/utils.h new file mode 100644 index 0000000..0d89d49 --- /dev/null +++ b/common/utils.h @@ -0,0 +1,42 @@ +#ifndef EULER_UTILS_H +#define EULER_UTILS_H + +typedef struct list +{ + struct list *next; + void *value; +} list_t; + +typedef void (*list_free_cb)(void *value); +typedef int (*list_compare_cb)(void *a, void *b); + +list_t *list_append(list_t *list, void *value); +list_t *list_append_int(list_t *list, int i); +list_t *list_append_long(list_t *list, long l); + +int list_len(list_t *list); + +void *list_get_n(list_t *list, int n); + +void list_sort(list_t **list, list_compare_cb); + +void list_free_int(void *value); +void list_free_long(void *value); + +void list_free(list_t *list, list_free_cb cb); + +long int fib(unsigned long int n); +long int fac(unsigned long int n); + +list_t *prime_factors_naive(const long *prime_table, long prime_table_size, + long number); + +long int gcd(long int a, long int b); + +long int lcm(long int a, long int b); + +int is_coprime(long int a, long int b); + +int pythagorean_triplet(int p, int q, int *a, int *b, int *c); + +#endif // EULER_UTILS_H |
