import math
spf = list()
sieve_list = list()
def sieve(MAXN):
# print(MAXN)
primes = list()
global sieve_list, spf
sieve_list = [True for i in range(MAXN)]
spf = [-1 for i in range(MAXN)]
spf[0] = 0
spf[1] = 1
i = 2
while i*i <= MAXN:
print(i)
if sieve_list[i] == True:
if spf[i] == -1:
spf[i] = i
for x in range(i*i, MAXN, i):
if spf[x] == -1:
spf[x] = i
sieve_list[x] = False
i += 1
# print(sieve_list)
for i in range(2, MAXN):
if sieve_list[i] == True:
primes.append(i)
print(spf)
return sieve_list
def get_prime_factors(x):
res = list()
while x != 1:
# print(x)
res.append(spf[x])
x = x//spf[x]
return res
if __name__ == '__main__':
t = int(input())
while t:
x, k = map(int, input().split())
# print(x, k)
if x<k:
print('0')
elif x<=2 and (k==1):
print('1')
elif x == 3 and k == 1:
print('1')
elif x == 3 and k !=1:
print('0')
elif x == 2 and k == 2:
print('0')
else:
sieve_list = sieve(x+1)
actual_k = get_prime_factors(x)
# print(actual_k)
set_k = set(actual_k)
if k == len(actual_k) or k == len(set_k):
print('1')
else:
print('0')
t -= 1
aW1wb3J0IG1hdGgKCnNwZiA9IGxpc3QoKQpzaWV2ZV9saXN0ID0gbGlzdCgpCgpkZWYgc2lldmUoTUFYTik6CgkjIHByaW50KE1BWE4pCglwcmltZXMgPSBsaXN0KCkKCWdsb2JhbCBzaWV2ZV9saXN0LCBzcGYKCXNpZXZlX2xpc3QgPSBbVHJ1ZSBmb3IgaSBpbiByYW5nZShNQVhOKV0KCXNwZiA9IFstMSBmb3IgaSBpbiByYW5nZShNQVhOKV0KCXNwZlswXSA9IDAKCXNwZlsxXSA9IDEKCQoJaSA9IDIKCXdoaWxlIGkqaSA8PSBNQVhOOgoJCXByaW50KGkpCgkJaWYgc2lldmVfbGlzdFtpXSA9PSBUcnVlOgoJCQlpZiBzcGZbaV0gPT0gLTE6CgkJCQlzcGZbaV0gPSBpCgkJCQkKCQkJZm9yIHggaW4gcmFuZ2UoaSppLCBNQVhOLCBpKToKCQkJCWlmIHNwZlt4XSA9PSAtMToKCQkJCQlzcGZbeF0gPSBpCgkJCQlzaWV2ZV9saXN0W3hdID0gRmFsc2UKCQlpICs9IDEKCSMgcHJpbnQoc2lldmVfbGlzdCkKCWZvciBpIGluIHJhbmdlKDIsIE1BWE4pOgoJCWlmIHNpZXZlX2xpc3RbaV0gPT0gVHJ1ZToKCQkJcHJpbWVzLmFwcGVuZChpKQoJcHJpbnQoc3BmKQkJCglyZXR1cm4gc2lldmVfbGlzdAoKZGVmIGdldF9wcmltZV9mYWN0b3JzKHgpOgoJCglyZXMgPSBsaXN0KCkKCXdoaWxlIHggIT0gMToKCQkjIHByaW50KHgpCgkJcmVzLmFwcGVuZChzcGZbeF0pCgkJeCA9IHgvL3NwZlt4XQoJcmV0dXJuIHJlcyAKCQppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgoJdCA9IGludChpbnB1dCgpKQoJd2hpbGUgdDoKCQl4LCBrID0gbWFwKGludCwgaW5wdXQoKS5zcGxpdCgpKQoJCSMgcHJpbnQoeCwgaykKCQlpZiB4PGs6CgkJCXByaW50KCcwJykKCQllbGlmIHg8PTIgYW5kIChrPT0xKToKCQkJcHJpbnQoJzEnKQoJCWVsaWYgeCA9PSAzIGFuZCBrID09IDE6CgkJCXByaW50KCcxJykKCQllbGlmIHggPT0gMyBhbmQgayAhPTE6CgkJCXByaW50KCcwJykKCQllbGlmIHggPT0gMiBhbmQgayA9PSAyOgoJCQlwcmludCgnMCcpCgkJZWxzZToKCQkJc2lldmVfbGlzdCA9IHNpZXZlKHgrMSkKCQkJYWN0dWFsX2sgPSBnZXRfcHJpbWVfZmFjdG9ycyh4KQoJCQkjIHByaW50KGFjdHVhbF9rKQoJCQlzZXRfayA9IHNldChhY3R1YWxfaykKCQkJaWYgayA9PSBsZW4oYWN0dWFsX2spIG9yIGsgPT0gbGVuKHNldF9rKToKCQkJCXByaW50KCcxJykKCQkJZWxzZToKCQkJCXByaW50KCcwJykKCQl0IC09IDE=