import java.util.*;import java.io.*;import java.text.* ;publicclassMain{staticboolean[] notPrime =newboolean[1000];publicstaticvoidmain(String[] args){try{
BufferedReader br=newBufferedReader(newInputStreamReader(System.in));
String[] parts = br.readLine().split(" ");int n = Integer.parseInt(parts[0]);int a = Integer.parseInt(parts[1]);
System.out.println(getRes(n, a));}catch(IOException e){
e.printStackTrace();}}publicstaticvoidisPrime(){
notPrime[0]= notPrime[1]=true;for(int i =2; i <1000;++i){if(!notPrime[i]){for(int j =2*i; j <1000; j += i)
notPrime[j]=true;}}}publicstaticintgetRes(int n,int a){int[] count1 =newint[100];int[] count2 =newint[100];int len =0;//质因子分解for(int i =2; i <1000&& a!=1;++i){if(!notPrime[i]){if(a%i==0){
count1[len]= i;while(a>1&& a%i ==0){
count2[len]++;
a = a/i;}
len++;}}}int k = Integer.MAX_VALUE;for(int i =0; i < len; i++){int p = count1[i];int num =0;//每一个p的倍数都将对n!贡献至少一个p因子while(p <= n){
num += n/p;
p = p * count1[i];//p再每多乘一个p因子,将会多贡献一个p因子}
num = num/count2[i];//将a和n!比对if(k > num) k = num;//找到共同最大的k}return k;}}