#include <iostream>
#include<bits/stdc++.h>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <utility>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include<algorithm>
#define IOF ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
#define ll long long
#define ld long double
#define cy cout << "YES" << '\n';
#define cn cout << "NO" << '\n';
using namespace std;
vector<bool> prime(1e3+5 , 1);
void is_prime()
{ prime[0]=0;
prime[1]=0;
for (ll i = 2; i*i <= 1e3+5; i++)
{ if(prime[i])
for (ll j = i*i; j < 1e3+5; j+=i)
prime[j]=0;
}
}
int main()
{IOF
int t=1 ;
while(t--)
{
int n , cnt = 1;cin >> n;
ll arr[n] , m = 1;
for (int i = 0; i < n; i++)
cin >> arr[i];
sort(arr,arr+n);
m = arr[0];
for (int i = 1; i < n; i++)
m = __gcd(m , arr[i]);
set<ll> v;
for (int i = 1; i <= m/i; i++)
if(m%i==0)
v.insert(i) , v.insert(m/i);
cnt = v.size();
cout << cnt << '\n';
}
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPGRlcXVlPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHVub3JkZXJlZF9zZXQ+CiNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgojaW5jbHVkZTxhbGdvcml0aG0+CiNkZWZpbmUgSU9GIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKSwgY2luLnRpZShudWxscHRyKSwgY291dC50aWUobnVsbHB0cik7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBjeSBjb3V0IDw8ICJZRVMiIDw8ICdcbic7CiNkZWZpbmUgY24gY291dCA8PCAiTk8iIDw8ICdcbic7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZlY3Rvcjxib29sPiBwcmltZSgxZTMrNSAsIDEpOwp2b2lkIGlzX3ByaW1lKCkKeyBwcmltZVswXT0wOwogIHByaW1lWzFdPTA7CiAgICBmb3IgKGxsIGkgPSAyOyBpKmkgPD0gMWUzKzU7IGkrKykKICAgIHsgICBpZihwcmltZVtpXSkKICAgICAgICBmb3IgKGxsIGogPSBpKmk7IGogPCAxZTMrNTsgais9aSkKICAgICAgICBwcmltZVtqXT0wOwogICAgfQp9CmludCBtYWluKCkKe0lPRgppbnQgdD0xIDsKd2hpbGUodC0tKQp7CiBpbnQgbiAsIGNudCA9IDE7Y2luID4+IG47CiBsbCBhcnJbbl0gLCBtID0gMTsKIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQogY2luID4+IGFycltpXTsKIHNvcnQoYXJyLGFycituKTsKIG0gPSBhcnJbMF07CmZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKQogbSA9IF9fZ2NkKG0gLCBhcnJbaV0pOwoKIHNldDxsbD4gdjsKIGZvciAoaW50IGkgPSAxOyBpIDw9IG0vaTsgaSsrKQogICAgaWYobSVpPT0wKQogICAgICAgIHYuaW5zZXJ0KGkpICwgdi5pbnNlcnQobS9pKTsKY250ID0gdi5zaXplKCk7CgogY291dCA8PCBjbnQgPDwgJ1xuJzsKIAogCn0gICAgCiAgICByZXR1cm4gMCA7Cn0=