#define _CRT_SECURE_NO_WARNINGS #define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING #include using namespace std; #define CRP(t, x) const t &x #define OPL(t, x) bool operator<(CRP(t, x)) const #define FIL(x, v) memset(x, v, sizeof(x)) #define CLR(x) FIL(x, 0) #define NE1(x) FIL(x, -1) #define INF(x) FIL(x, 0x3f) #ifndef _DEBUG #define _DEBUG 0 #endif // !_DEBUG #define IFD if (_DEBUG) typedef long long ll, i64; ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a % b); } const int N = 4e5 + 50, M = 1e6 + 60; ll a[N]; int primes[N], pcnt; bool notPrime[M]; int main() { for (ll i = 2; i < M; i++) if (!notPrime[i] && (primes[pcnt++] = i)) for (ll j = i * i; j < M; j += i) notPrime[j] = true; int n; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%lld", a + i); ll g = *a; for (int i = 1; i < n; i++) g = gcd(g, a[i]); ll ans = 1, cur = 0; for (int i = 0; i < pcnt && g > 1; i++) { cur = 0; for (; g % primes[i] == 0; g /= primes[i]) cur++; ans *= cur + 1; } printf("%lld", ans); return 0; }