summaryrefslogtreecommitdiff
path: root/gcd.c
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2022-11-07 16:47:40 +0200
committerIgor Pashev <pashev.igor@gmail.com>2022-11-07 16:48:05 +0200
commit90b77e76146a4f47f7208853ee7de7d7fdf55945 (patch)
treeda8b64a5dc8c6fbbe1a0579542586a07f68ea841 /gcd.c
parent6c0c8fb05214d1cf631f5aad657e38195ae88c95 (diff)
downloadgcd-90b77e76146a4f47f7208853ee7de7d7fdf55945.tar.gz
Update gcd.c
Diffstat (limited to 'gcd.c')
-rw-r--r--gcd.c36
1 files changed, 16 insertions, 20 deletions
diff --git a/gcd.c b/gcd.c
index 227be89..5fa3840 100644
--- a/gcd.c
+++ b/gcd.c
@@ -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;
}