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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2017, 17:35   #1
treup
Пользователь
 
Регистрация: 10.07.2017
Сообщений: 14
Вопрос как работает

как работает эта функция я ее нашел и не знаю как это работает
Код:
int lcm(int a, int b)
{
  return a / gcd(a, b) * b;
}
хочу узнать чтобы самому такое создавать, а то я не пойму как такой маленький код работает

Последний раз редактировалось treup; 10.09.2017 в 17:38.
treup вне форума Ответить с цитированием
Старый 10.09.2017, 17:47   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А что именно непонятно-то?
Просто функция, которая принимает два аргумента и возвращает какое-то число полученное в результате этого вычисления. gcd — какая-то другая функция вызываемая в ней.

в
Код:
int a = 4;
int b = sqrt(a) + 1;
все понятно же?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.09.2017, 17:57   #3
treup
Пользователь
 
Регистрация: 10.07.2017
Сообщений: 14
По умолчанию

вот
Код:
int gcd(int a, int b)
{
   if (b == 0) return a;
   return gcd(b, a % b);
}
как работает return gcd(b, a % b)
treup вне форума Ответить с цитированием
Старый 10.09.2017, 18:05   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Рекурсия.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.09.2017, 18:07   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

так же, как return x
p51x вне форума Ответить с цитированием
Старый 10.09.2017, 18:13   #6
treup
Пользователь
 
Регистрация: 10.07.2017
Сообщений: 14
По умолчанию

да но как такой мелкий код делает тоже что и это
Код:
int main()
{
	int o3 = 0;
	int o2=-1;
	int arrsu[5];
	int arr[10];
	int no = 1;
	int s, a,b, z;
	int o = 0;
	std::cin >> a;
	std::cin >> z;
	while (a != 1)
	{
		if (a % 2 == 0) {

			arr[o] = 2;
			a /= 2;
			o++;
		}
		else if (a % 3 == 0) {

			arr[o] = 3;
			a /= 3;
			o++;
		}
		else if (a % 5 == 0) {

			arr[o] = 5;
			a /= 5;
			o++;
		}
		else if (a % 7 == 0) {

			arr[o] = 7;
			a /= 7;
			o++;
		}
		else {
			arr[o] = a;
			a /= a;
			o++;
		}

	}
	int arr1[10];
	int h = 0;
	while (z != 1)
	{
		if (z % 2 == 0) {

			arr1[h] = 2;
			z /= 2;
			h++;
		}
		else if (z % 3 == 0) {

			arr1[h] = 3;
			z/= 3;
			h++;
		}
		else if (z % 5 == 0) {

			arr1[h] = 5;
			z /= 5;
			h++;
		}
		else if (z % 7 == 0) {

			arr1[h] = 7;
			z /= 7;
			h++;
		}
		else {
			arr[h] = z;
			z /= z;
			h++;
		}

	}
	if (h <= o) {
		for (s = 0; s <= o;s++) {
			if (arr1[s] == arr[s]) {
				arrsu[o3] = arr[s];
				o3++;
				o2++;
} 
		}
	}
	else { 
		for (s = 0; s <= h; s++) {
			if (arr1[s] == arr[s]) {
				arrsu[o3]=arr[s];
				o3++;
				o2++;

			}
		}
	}

	for (b = 0; b < o2; b++) {
		no *= arrsu[b];
	}
	std::cout << no;
	system("pause");
    return 0;
}
treup вне форума Ответить с цитированием
Старый 10.09.2017, 18:47   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Может ваш код не оптимален? Может есть лучше алгоритм? Вам такие мысли в голову не приходили? Тут проблема не в математике...
p51x вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Border работает не так как хотелось бы во всех браузерах. Как быть? Semreg HTML и CSS 2 27.05.2017 01:19
как сделать код сайта когда кликаешь блок в блоке квадратики круги, правильный или не правильный ответ, понять как он работает и как определять где правильный ответ bule Помощь студентам 19 12.08.2016 10:05
Как сделать чтобы символы пробел и Ентер не записывались? Вот как я придумал но, что-то не работает Aqua77 Общие вопросы C/C++ 4 05.08.2015 03:52
Эвристическое составление расписания. Как работает Эвристика и как ее использовать в программировании JinAnton C# (си шарп) 0 06.01.2013 14:34
Люди. Как сделать правильно? Прога работает, но не так, как надо. Должна генерировать лабиринты и находить путь из него SapHain Visual C++ 2 12.06.2012 09:15