diff options
Diffstat (limited to 'gcd.c')
-rw-r--r-- | gcd.c | 36 |
1 files changed, 16 insertions, 20 deletions
@@ -1,10 +1,10 @@ #include <stdlib.h> #include <stdio.h> -static unsigned long int -gcd2 (unsigned long int a, unsigned long int b) +static unsigned long +gcd2 (unsigned long a, unsigned long b) { - unsigned long int c; + unsigned long c; while (b != 0) { c = b; @@ -14,16 +14,14 @@ gcd2 (unsigned long int a, unsigned long int b) return a; } -static unsigned long int -gcdn (unsigned long int *a, size_t n) +static unsigned long +gcdn (const unsigned long *a, size_t n) { - unsigned long int r; + unsigned long r; size_t i; r = a[0]; for (i = 1; i < n; i++) - { - r = gcd2 (r, a[i]); - } + r = gcd2 (r, a[i]); return r; } @@ -31,22 +29,20 @@ gcdn (unsigned long int *a, size_t n) int main (int argc, char *argv[]) { - unsigned long int *a; + unsigned long *a; size_t i, n; if (argc > 1) { n = (size_t) (argc - 1); - a = (unsigned long int *) malloc (sizeof (unsigned long int) * n); - if (NULL != a) - { - for (i = 1; i <= n; i++) - a[i - 1] = strtoul (argv[i], NULL, 10); - printf ("%lu\n", gcdn (a, n)); - free (a); - return EXIT_SUCCESS; - } - return EXIT_FAILURE; + a = (unsigned long *) malloc (n * sizeof (unsigned long)); + if (!a) + return EXIT_FAILURE; + + for (i = 1; i <= n; i++) + a[i - 1] = strtoul (argv[i], NULL, 10); + printf ("%lu\n", gcdn (a, n)); + free (a); } return EXIT_SUCCESS; } |