#include <stdio.h>

#define PRIMES_COUNT 37
#define MAX_PRIMES 10

int main() {
	static int primes[PRIMES_COUNT] = {
        2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53,
        59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113,
        127, 131, 137, 139, 149, 151, 157
    };

	unsigned int k;
    int i, n;
    int current_prime = 0, answer = -1;
    unsigned int temp;
    int key_index;

    int multK[MAX_PRIMES];
    int keys[MAX_PRIMES];
    int multN[MAX_PRIMES];

	for (i = 0; i < MAX_PRIMES; i++) {
        multK[i] = 0;
        keys[i]=0;
        multN[i] = 0;
	}

    scanf("%d%u", &n, &k);

	temp = k;
	key_index=0;
	
	int increase_key = 0;
	
	while (current_prime < PRIMES_COUNT)
        if (temp % primes[current_prime] == 0) {
            temp /= primes[current_prime];
            if ( multK[key_index]==0 )
            {
            	keys[key_index]=primes[current_prime];
            	increase_key = 1;
            }
            multK[key_index]++;
        } else 
        {
        	current_prime++;
        	
        	if (increase_key==1)
        	{
        		increase_key = 0;
        		key_index++;
        	}
        	
        	if (key_index>=MAX_PRIMES)
        	{
        		printf("Слишком маленький размер массива ключей");
        		exit(1);
        	}
        }

	for (i = 2; i <= n; i++) {
        int temp = i;
		key_index=0;
		while (key_index<MAX_PRIMES && multK[key_index]!=0)
			if (temp % keys[key_index] == 0) {
                    temp /= keys[key_index];
                    multN[key_index]++;
                } else key_index++;
            
    }

    for (i = 0; i < MAX_PRIMES && multK[i]!=0; i++) {
        temp = multN[i] / multK[i];
        if (temp < answer || answer == -1) answer = temp;
    }

    printf ("%i\n", answer);
    return (0);
}