2 回答

TA贡献1993条经验 获得超5个赞
//按题目的意思要判断是否使用相同的参数
struct
{
int a, b, gcd, k;
}A[256];
int N = 0;
int gcd(int a, int b)
{
int t = a%b;
while(t)
{
a = b;
b = t;
t = a%b;
}
return b;
}
int CommonFactor(int a, int b)
{
int i, k, y;
for(i=0; i<N; i++)
if(a==A[i].a && b==A[i].b)break;
if(i==N)
{
A[N].a = a;
A[N].b = b;
A[N].k = 1;
A[N].gcd = gcd(a, b);
++N;
return A[i].gcd;
}
k = 0;
for(y = A[i].gcd-1; y>0; y--)
{
if(A[i].gcd % y == 0)++k;
if(k==A[i].k)break;
}
if(k!=A[i].k)return -1;
++A[i].k;
return y;
}
void fun(int a, int b)
{
printf("(%d %d) : %d\n", a, b, CommonFactor(a, b));
}
int main()
{
fun(100, 50);
fun(4, 6);
fun(100, 50);
fun(4, 6);
fun(100, 50);
fun(100, 50);
fun(100, 50);
fun(100, 50);
fun(100, 50);
}
- 2 回答
- 0 关注
- 662 浏览
添加回答
举报