算法练习16

来源:互联网 发布:marc元数据知乎 编辑:程序博客网 时间:2024/05/28 16:26

最大公约数

#include <stdio.h>
#define MAX_SIZE 1024
int main()
{
    int flag = 0;
    int a;
    int b;
    int i;
    int j = 0;
    int counta;
    int countb;
    int num_a[MAX_SIZE];
    int num_b[MAX_SIZE];
    printf("please input a,b\n");
    printf("a=");
    scanf("%d",&a);
    printf("b=");
    scanf("%d",&b);
    for(i = a; i > 0;i--)
    {
        if((a % i) == 0)
 {
     num_a[j] = i;
     j++;
 }
    }
    counta = j - 1;
    j = 0;
    for(i = b; i > 0; i--)
    {
        if((b % i) == 0)
 {
     num_b[j] = i;
     j++;
 }
    }
    countb = j - 1;
    i = 0;
    j = 0;
    if(a > b)
    {
        while(i != counta)
 {
    while(j != countb)
    {
        if(num_a[i] == num_b[j])
        {
            flag = 1;
     break;
        }
        j++;
    }
    j = 0;
    i++;
    if(flag)
    {
        break;
    }
 }
 i--;
 j--;
    }
    else if(a < b)
    {
        while(i != countb)
 {
    while(j != counta)
    {
        if(num_a[i] == num_b[j])
        {
            flag = 1;
     break;
        }
        j++;
    }
    j = 0;
    i++;
    if(flag)
    {
        break;
    }
 }
 i--;
 j--;
    }
    else
    {
        num_a[i] = a;
    }
    if(flag)
    {
        printf("gcd is %d\n",num_a[i]);
    }
    else if((a%b == 0)||( b % a ==0))
    {
        if(a>b)
 {
            printf("gcd is %d\n",b);
 }
 else
 {
            printf("gcd is %d\n",a);
 }
    }
    else
    {
        printf("no gcd\n");
    }
    return 0;
}

0 0
原创粉丝点击