70分求助 #7/8 RE #9 WA
#include<iostream>
using namespace std;
int main()
{
int x0,y0;
cin>>x0>>y0;
int p[10000]={0},q[10000]={0};
int num=0;
int k=y0/x0;
for(int i=1;i<=k;i++)
{
p[i]=i*x0;
q[i]=i*x0;//创建两个3 6 9 ... 60的数组(x0的1 2 3...k倍)
}
for(int i=1;i<=k;i++)
{
for(int j=i;j<=k;j++)
{
if(y0%q[j]==0 && y0%p[i]==0)//判断数组内的数是否为y0的约数,排除如27 33等数
{
int z=y0/q[j];//60/15=4
int x=y0/p[i];//60/12=5
int u;
for(int h=2;h<=x;h++)
{
if(z%h ==0 && x%h==0)
{
break;
}
u=h;//判断y0是否为这两个数的最小公倍数
}
if(u==x)//如果是最小公倍数
{
int e=q[j]/x0;//15/3=5
int f=p[i]/x0;//12/3=4
num+=2;
//cout<<p[i]<<" "<<q[j]<<"+"<<endl;
for(int h=2;h<=f;h++)
{
if(e%h ==0 && f%h==0)
{
num-=2;
//cout<<p[i]<<" "<<q[j]<<"-"<<endl;
break;
}
} //判断x0是否是两个数的最大公约数
}
}
}
}
cout<<num;
}