blob: f63fd2371d5832d233726875b2f5d95cf8f0b658 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
' Tested with FreeBASIC 1.10.0
'
' Synopsis:
' $ fbc -x gcd-bas gcd.bas
' $ ./gcd-bas 11 22 33 121
'
FUNCTION gcd2 (BYVAL a AS ULONGINT, BYVAL b AS ULONGINT) AS ULONGINT
DIM c AS ULONGINT
DO WHILE (b > 0)
c = b
b = a MOD b
a = c
LOOP
RETURN a
END FUNCTION
FUNCTION gcdn (nums() AS ULONGINT) AS ULONGINT
DIM gcd AS ULONGINT = nums(LBOUND(nums))
FOR i AS INTEGER = LBOUND(nums) + 1 TO UBOUND(nums)
gcd = gcd2(gcd, nums(i))
NEXT
RETURN gcd
END FUNCTION
DIM argc AS INTEGER = 0
DO WHILE (LEN(COMMAND(argc + 1)) > 0)
argc += 1
LOOP
IF argc = 0 THEN STOP
DIM nums(argc) AS ULONGINT
FOR i AS INTEGER = 1 TO argc
nums(i) = VALULNG(COMMAND(i))
NEXT
PRINT gcdn(nums())
|