luoguP1029出了问题

问题遇到的现象和发生背景

在洛谷做P029

问题相关代码,请勿粘贴截图
#include <bits/stdc++.h>
using namespace std;
int cnt = 0;
int kkk(int a,int b)
{
    if(b == 0) return a;
    else return kkk(b,a % b);
} 
int check1(int a,int b)
{
    return a * b / kkk(a,b);
}
int main()
{
    int x,y;
    cin >> x >> y;
    long long pro = x * y;
    if(x == y)
    cnt--;
    for(int z = 1;z < sqrt(x * y);z++)
    {
        if(pro % z == 0 && kkk(z,pro / z) == x) 
        cnt += 2;
    }
    cout << cnt;
    return 0;
}

运行结果及报错内容

有一个样例没过,wa了

我的解答思路和尝试过的方法

我想要达到的结果

通过该题

有个结论 最大公因数*最小公倍数 = 两数乘积


#include <bits/stdc++.h>
using namespace std;
int n, m, s;

signed main(void)
{
    cin >> n >> m;
    for (int i = n; i <= m; i++)
    {
        int j = n * m / i;
        // gcd是求最大公因数
        if (__gcd(i, j) == n && i * j / __gcd(i, j) == m)
            s++;
    }
    cout << s;
}