#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse2")

    /*
    ||||||||||||||||||||||||||||||||||||||||||||||||
       |      |||         |      ||||    ||||  |   |
      | |     |   |      | |     |   |  |      |   |
     |   |    |    |    |   |    |   |  |      |   |
    |||||||   |    |   |||||||   |||     |||   |||||
    |     |   |   |    |     |   | |        |  |   |
    |     |   |||      |     |   |  ||  ||||   |   |
    ||||||||||||||||||||||||||||||||||||||||||||||||

    */
    using namespace std;
    //#include "testlib.h"
    #define ff first
    #define ss second
    #define mp make_pair
    #define all(v) v.begin(),v.end()
    #define int long long
    #define ll long long
    #define M 1000000007
    #define inputarr(a,n) for(int i=0;i<n;++i) cin>>a[i]
    #define GCD(m,n) __gcd(m,n)
    #define LCM(m,n) m*(n/GCD(m,n))
    #define mii  map<ll ,ll >
    #define msi  map<string,ll >
    #define mis  map<ll int, string>
    #define rep(a,b)    for(ll i=a;i<b;i++)
    #define rep0(n)    for(ll i=0;i<n;i++)
    #define repi(i,a,b) for(ll i=a;i<b;i++)
    #define pb push_back
    #define vi vector<ll>
    #define mp make_pair
    #define vs vector<string>
    #define ppb pop_back
    #define endl '\n'
    #define asdf ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    #define r0 return 0;
    #define FORD(i, a, b) for (int i = (int) (a); i >= (int) (b); --i)
    #define FORE(it, c) for (__typeof((c).begin()) it = (c).begin(); it != (c).end(); ++it)
    #define inputoutput freopen("input.txt", "r", stdin);freopen("output.txt", "w", stdout);
    #define input freopen("input.txt", "r", stdin);
    #define Set(a, s) 4(a, s, sizeof (a))
    #define FOR repi
    #define pii pair<int,int>
    #define REVERSE(v) reverse(ALL(v))
    #define display(x) trav(a,x) cout<<a<<" ";cout<<endl
    #define debug cerr<<"bhau"<<endl
    #define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
    template <typename Arg1>
    void __f(const char* name, Arg1&& arg1){
        std::cerr << name << " : " << arg1 << endl;
    }
    template <typename Arg1, typename... Args>
    void __f(const char* names, Arg1&& arg1, Args&&... args){
        const char* comma = strchr(names + 1, ',');std::cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
    }
    ll max(ll a, ll b) { return (a > b)? a : b;}
    int min(int a, int b) { return (a < b)? a : b;}
    void amax(int &a,int b){a=max(a,b)%M; }
    void amin(int &a,int b){ a=min(a,b)%M;}
    void inc(int &a,int b){a=(a+b)%M;}
    void dec(int &a,int b){a=(a-b+M)%M;}

   // vector<int> lp, primes;
   //    const int MAX = 1000000;
   //  void factor_sieve() {
   //    lp.resize(MAX);
   //    lp[1] = 1;
   //    for (int i = 2; i < MAX; ++i) {
   //      if (lp[i] == 0) {
   //        lp[i] = i;
   //        primes.emplace_back(i);
   //      }
   //      for (int j = 0; j < primes.size() && primes[j] <= lp[i]; ++j) {
   //        int x = i * primes[j];
   //        if (x >= MAX) break;
   //        lp[x] = primes[j];
   //      }
   //    }
   //    }
      
    bool prime(int a){
      if(a==2) return true;
      if(a<2) return false;
      if(a%2==0) return false;
      for(int i=3;i*i<=a;i+=2){
        if(a%i==0) return false;
      }
      return true;
    }
    
     int solve()
     {  
      int a,b;cin>>a>>b;
      set<int> s;
     
      //fcout<<prime[6]<<endl;
      for(int i=1;i*i<=a||i*i<=b;i++){
        if(a%i==0&&b%i==0){
          if(prime(i)) s.insert(i);
       //   if(prime[a/i]) s.insert(a/i)

        }
          int temp=a/i;
          if(a%i==0)
          if(prime(temp)&&b%temp==0&&a%temp==0) s.insert(temp);
          temp=b/i;
          if(b%i==0)
          if(prime(temp)&&a%temp==0&&b%temp==0) s.insert(temp); 
       // trace(i,s.size());
        
      }
      //for(auto i:s) cout<<i<<" ";cout<<endl;
     cout<<s.size()+1<<endl;
     

        r0   
     }
    signed main()
    {   
        asdf
        
        int t=1;
        //cin>>t;
        while(t--)
        {
            solve();
        }     
        
}

Measured memory_bytes: 256