Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2019, 19:46   #1
DamnedMacTavish
 
Аватар для DamnedMacTavish
 
Регистрация: 21.09.2019
Сообщений: 4
По умолчанию Си. Как пощитать НОД массива чисел?

мои тщетные попытки Ж
Код:
  int gi = 1, multipliescd = 1, t = 0, r, ostatok1 = 1;
    int igramm3[] = { 232, 52, 24}; // int o = sizeof(igramm3);
    cur:
    while( gi<3){
        while( ostatok1 != 0){
                ostatok1 = igramm3[gi-1]%igramm3[gi];
                igramm3[gi-1] = igramm3[gi];
                igramm3[gi] = ostatok1;

        }
        ostatok1 =  igramm3[gi-1];
        igramm3[gi] = igramm3[gi-1];
        printf("\n NOD = %d \n", igramm3[gi-1]);
        gi++;
        goto cur;
и
Код:
int main(){
    int ls, r, ss, gi, ns = 0, multipliescd=1, t, two;
    int igramm3[] = { 36, 72, 144, 288, 56};
    int rot = sizeof(igramm3);
    int arraygcg1[] = {};//массив делителей
    for(gi = 0; gi <= rot; gi++){
        igramm3[gi]/2;
        if(!igramm3[gi]/2) break;
        if(gi = rot)arraygcg1[++ns] = 2;

    }
    for(gi = 0; gi <= rot; gi++){
        igramm3[gi]/3;
        if(!igramm3[gi]/3) break;
        if(gi = rot)arraygcg1[++ns] = 3;

    }
    for(t =1; t<= ns; t++){
            multipliescd *= arraygcg1[t];
    }
    printf("\n NOD = %d \n", multipliescd );
return 1;
}
и

Код:
int main(){
    int ls, r, ss, gi, ns = 0, multipliescd=1, t, two, delitel;
    int igramm3[] = { 36, 72, 51, 144, 288, 56};
    int rot = 5;

     for(delitel = 2; delitel < 7; delitel++){
       printf("\n delitel = %d \n", delitel);

        for(gi = 0; gi <= rot; gi++){
            printf("\n igramm3[gi] = %d \n", igramm3[gi]);
            igramm3[gi]/delitel;
            printf("\n igramm3[gi]/delitel; = %d \n", igramm3[gi]/delitel);
            if(gi = rot){ multipliescd *= delitel;
            printf("\n multipliescd = %d \n", multipliescd);}

        }
     }

    printf("\n NOD = %d \n", multipliescd );
return 1;
}
и

Код:
int main(){
    int ls, r, ss, gi = 1, ns, rot, multipliescd, t, two;
    int igramm3[] = { 232, 52}; // int o = sizeof(igramm3);
    int arraygcg1[] = {};//массив делителей
    while( igramm3[gi] != 0){
        igramm3[gi+1] = igramm3[gi-1]%igramm3[gi];
        printf("\n igramm3[gi+1] = %d \n", igramm3[gi+1]);
        gi = gi+1;printf("\n gi = %d \n", gi);
    }
     //НОД
    printf("\n NOD = %d \n", igramm3[gi-1]);
}
DamnedMacTavish вне форума Ответить с цитированием
Старый 21.09.2019, 20:20   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Для начала уточним: "пощитать" - это "пощипать" или "посчитать" ?
А по теме: я бы нашел все делители первого числа, отсортировал бы их по убыванию, затем на каждый попробовал бы поделить остальные числа. Не получается - долой этот делитель.
Как-то так.
digitalis вне форума Ответить с цитированием
Старый 22.09.2019, 13:25   #3
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Пусть GCD(a, b) - функция, возвращающая НОД двух чисел a и b.
Тогда НОД всего массива равен
Код:
g=GCD(igramm3[0], igramm3[1]);
for (i=2; i<rot; i++){
  g=GCD(g, igramm3[i])
}
FPaul вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дано 9 массивов в каждом 5 чисел. Вывести комбинации вариантов из 5-и чисел таким образом, чтобы все числа одного массива повторились с числами другого массива 1 раз. i_lisenok Помощь студентам 7 26.11.2018 14:06
Дан массив,состоящий N (N>1) вещественных чисел. Найти среднеарифметическое значение чисел массива. nikola_orsha Паскаль, Turbo Pascal, PascalABC.NET 2 11.10.2016 13:05
Пощитать интеграл методом трапеций, прямоугольников, симпсона с точностю eps =0.001 Pein95 Общие вопросы C/C++ 2 05.12.2012 16:44
Пощитать количество знаков в RichEdit Vladya Помощь студентам 3 05.03.2009 17:08