Форум программистов, компьютерный форум CyberForum.ru

Найти НОД для всех элементов массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ найти первую цифру числа в массиве с++ http://www.cyberforum.ru/cpp-beginners/thread90030.html
добрый день всем! не могу понять с чего начать (с++): "В массиве из целых чисел найти среднее арифметическое тех чисел, запись которых начинается с цифры 5." с масивом все понятно, но как определить первую цифру числа? только начинаю изучать с++, и очень много непонятного
C++ Трабл с считыванием данных из бинарного файла суть проблемы, программа отлично работает с данными после запуска, считывает и записывает на диск как и положенно (это не сложно проверить поскок для хранения данных после ввода и считываемых с файла используется один и тот же массив указателей и если ввести данные по 3 людям, записать в файл, а после этогого ввести еще по 2 и считать то при выводе на экран будут выведенные данные которые были... http://www.cyberforum.ru/cpp-beginners/thread90023.html
открыть файл для добавления в начало C++
какую из побитовых масок определенных в классе ios мне необходимо использовать чтобы добавлять в начало файла при новом вызове функции
Массив из max элементов других двух C++
Пните, что не так. Ошибок не выдает, но работать функция func_max отказывается, ничего не печатает Задача функцией в качестве результата сформировать массив из max элементов других двух v.1 #include<iostream> #include<math.h> using namespace std; //
C++ Три программы на циклы http://www.cyberforum.ru/cpp-beginners/thread89982.html
Добрые люди помогите пожалуйста решить задачки!!! За ранее ОГРОМНОЕ СПАСИБО!!!! 1. Создать программу, которая выводит на экран простые числа в диапазоне от 2 до 1000. (Число называется простым, если оно делится только на 1 и на само себя без остатка; причем числа 1 и 2 простыми не считаются). 2. Написать программу, которая выводит на экран - следующую фигуру: ********************* * ...
C++ Функции и эхо-контроль Даны положительные действительные числа А, Х, Е(epsilon). В последовательности У1,У2,... ,образованной по закону У0=А; Уi=1/2(Уi-1 +Х/Уi-1) , i=1,2,3,4........? (i, i-1 --индексы У) найти первый член Уn, для которого выполнено неравенство |Уn*Уn-Уn-1*Уn-1|<Е (n, n-1 -- индекс У). Как сделать ввод чисел с клавиатуры с эхо-контролем и все это в функцию запихнуть. подробнее

Показать сообщение отдельно
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
27.01.2010, 18:12     Найти НОД для всех элементов массива
Ерунда все это.
Алгоритм неэффективный.
А если самое маленькое значение - 1000000, а NOD всего массива при этом равен 1 ?
Будем цикл 999999 раз перебирать ?

Как известно NOD(a1,a2,a3,a4)=NOD(NOD(NOD(a1,a2),a3),a4)
Отсюда следует простой код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/* Thread 90039 */
 
#include <stdio.h>
 
 
/********************************************************************/
int gcd( int a, int b );
int arr_gcd( int n, const int *pa );
 
 
/********************************************************************/
int main( void ) {
 
int g;
int a[6]= { 12000, 300, 1500, 2100, 18000, 291 };
 
 
g= arr_gcd( 6, a );
printf( "%d\n", g );
 
return 0;
 
} /* main() */
 
 
/********************************************************************/
int gcd( int a, int b ) {
 
int c;
 
while (b!=0) {
    c= a%b; a= b; b= c;
}
return ((a>=0) ? a : -a);
 
} /* gcd() */
 
 
/********************************************************************/
int arr_gcd( int n, const int *pa ) {
 
int i, g;
 
 
if ( n<1 ) { return 1; }
g= pa[0];
for ( i= 1; i<n; i++ ) { g= gcd( g, pa[i] ); }
return g;
 
} /* arr_gcd() */
 
Текущее время: 16:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru