1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn = 50005;
4 vector<int> vec[maxn];//把数组中每一个元素定义为vector容器,存放的是对应下标的所有因子
5 void init(){
6 vec[1].push_back(1);//1的因子只有1
7 for(int i=2;i<=50000;++i){
8 vec[i].push_back(1);
9 vec[i].push_back(i);//包括1和它本身的因子先放进容器
10 }
11 for(int i=2;i<=25000;++i)//i是j的因子
12 for(int j=i*2;j<=maxn;j+=i)//i的倍数即为j的因子
13 vec[j].push_back(i);
14 }
15 int n,m,x,y,a[maxn];//数组a记录每个因子的个数
16 int main()
17 {
18 init();//打表
19 while(cin>>n>>m){
20 memset(a,0,sizeof(a));//初始化
21 while(m--){
22 cin>>x>>y;
23 if(x==1)a[y]++;//将y这个因子的个数加1
24 else{
25 int ans=0;
26 for(unsigned int i=0;i<vec[y].size();++i)
27 ans+=a[vec[y][i]];//将D中每个因子的个数全部加起来
28 cout<<ans<<endl;
29 }
30 }
31 }
32 return 0;
33 }