// ver.2 빠른 버전
#include <stdio.h>
int v[1000004];
// 입력: x : 약수를 구할 정수
// 출력 : count : x의 약수의 개수
int factor_fast(int x)
{
// count = 약수의 개수
int count = 0;
// i를 1부터 root(x)까지 돌린다.
for (int i = 1; i * i<= x; i++)
{
// x 나누기 i를 헀는데 나머지가 0이면 약수이므로
// count에 2을 더해준다.(약수 : i랑 x / i)
if (x % i == 0) count += 2;
// 만약 위에서 2를 더해줬는데 두 개를 곱헀더니 x가 나왔다는건
// 두 숫자가 같다는 것이므로 하나 뺴 준다.
if (i * i == x) count--;
}
// 약수의 개수를 매인 함수로 전달.
return count;
}
int main()
{
int m, n;
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i++)
scanf("%d", &v[i]);
for (int i = 0; i < n; i++)
{
// factor 함수에서 나온 약수의 개수와 m 나누기 v[i]를 한 배수 값을 더한 후 -1 해준다.
printf("%d\n", (factor_fast(v[i]) + m / v[i]) - 1);
}
}