c - 寻找Array Code C语言的GCD

标签 c arrays for-loop greatest-common-divisor

我正在尝试用 C 编写一个程序。该程序应该找到给定数组的 GCD(最大公约数)。我正在尝试使用最小数量的数组来查找 GCD。我想知道我的最后一个循环有什么问题。我还没有想出一种方法来检查除法是否给出任何小数点以停止循环。这是我的代码

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int A[10]={112, 160, 180, 240, 288, 32, 480, 96, 60, 72};
    int i;
    int j;
    int minimum = A[0];
    int GCD;
    int temp;

    for (i=1;i<9;i++)
    {
        if( A[i] < minimum)
        {
            minimum = A[i];
        }
    }

    for (i=1; i < minimum/2; i++)
    {
        for (j = 0; j < 9;j++)
        {
            GCD = 2*i;
            temp = ((A[j])/(GCD));
            int check = temp%1;
            if (check == 0)
                break;
        }
    }

    printf("The Greates Common Denominator is: %d", GCD);

    return 0;
}

最佳答案

#include <stdio.h>

unsigned gcd(unsigned x, unsigned y){
    unsigned wk;
    if(x<y){ wk=x;x=y;y=wk; }
    while(y){
        wk = x%y;
        x=y;
        y=wk;
    }
    return x;
}

int gcd_a(int n, int a[n]){
    if(n==1) return a[0];
    if(n==2) return gcd(a[0], a[1]);
    int h = n / 2;
    return gcd(gcd_a(h, &a[0]), gcd_a(n - h, &a[h]));
}

int main(void){
    int A[10]={112, 160, 180, 240, 288, 32, 480, 96, 60, 72};
    int size_A = sizeof(A)/sizeof(*A);
    int gcd = gcd_a(size_A, A);
    printf("%d\n", gcd);
    return 0;
}

关于c - 寻找Array Code C语言的GCD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21128981/

相关文章:

C 中的 char 数组并进行比较

java - 从文本文件写入时,数组仅将值设置为 "0"

javascript - 如何处理动态数组?

c - C 中的空字符和字符串

有人可以解释一下这个声明中发生了什么吗?

c - Valgrind 在每个程序上报告 "Conditional jump or move depends on uninitialised value(s)"

c - 从用户输入的数组中删除空格

c++ - 在C++中定义一个 'for'循环宏

JavaCC:嵌套 for 循环

java - 如何启用 Android GUI 以在启动后解锁 SIM PIN?