#include <stdio.h>
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
int x,a0,a1,b0,b1,n,i,s,m=0;
scanf("%d",&n);
for(i=0,s=0;i<n;i++)
{
scanf("%d %d %d %d",&a0,&a1,&b0,&b1);
a0=a0/a1;b0=b1/b0;
for(x=a1;x*x<=b1;x+=a1)
if(b1%x==0){ //x是b1的一个因子
if(x%a1==0&&gcd(x/a1,a0)==1&&gcd(b0,b1/x)==1) s++;
int m=b1/x; //y是另一个因子
if(x==m) continue;
if(m%a1==0&&gcd(m/a1,a0)==1&&gcd(b0,b1/m)==1) s++;
}
printf("%d\n",s);
s=0;
}
return 0;
}
为何当解法一x的取值范围改变后答案错误。
准确来说是为何这个取值范围错误。求大佬解答