import java.util.*;
import java.lang.*;
import java.math.*;
import java.io.*;

import static java.lang.Math.*;
import static java.util.Arrays.*;

public class B{
	Scanner sc=new Scanner(System.in);

	int INF=1<<28;
	double EPS=1e-9;

	int n;
	int[] xs, ys, p;

	void run(){
		n=sc.nextInt();
		xs=new int[n];
		ys=new int[n];
		for(int i=0; i<n; i++){
			xs[i]=sc.nextInt();
			ys[i]=sc.nextInt();
		}
		solve();
	}

	int check(int k, int i, int y){
		int ret=0;
		if(p[k]<i-y){
			ret=1;
		}
		p[k]=i;
		return ret;
	}

	void solve(){
		p=new int[100001];
		fill(p, -1);
		for(int i=0; i<n; i++){
			int ans=0;
			for(int k=1; k*k<=xs[i]; k++){
				if(xs[i]%k!=0){
					continue;
				}
				ans+=check(k, i, ys[i]);
				if(xs[i]/k!=k){
					ans+=check(xs[i]/k, i, ys[i]);
				}
			}
			println(ans+"");
		}
		System.out.flush();
	}

	void println(String s){
		System.out.println(s);
	}

	void print(String s){
		System.out.print(s);
	}

	void debug(Object... os){
		System.err.println(Arrays.deepToString(os));
	}

	public static void main(String[] args){
		System.setOut(new PrintStream(new BufferedOutputStream(System.out)));
		new B().run();
	}
}