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

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

public class CompositeSmash {

	int INF=1<<28;
	double EPS=1e-9;
	
	int n,target;
	int[] flag;

	public String thePossible(int n, int target) {
		this.n=n;
		this.target=target;
		flag=new int[n+1];
		fill(flag,-1);
		return rec(n)==1?"Yes":"No";
	}
	
	int rec(int m){
		if(flag[m]>=0){
			return flag[m];
		}
		
		if(m==target){
			return flag[m]=1;
		}
		
		int res=1;
		boolean prime=true;
		for(int i=2;i*i<=m;i++){
			if(m%i==0){
				if(rec(i)==1||rec(m/i)==1){
					prime=false;
				}else{
					res=0;
					break;
				}
			}
		}
		if(prime){
			res=0;
		}
		return flag[m]=res;
	}

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

}