Найти наибольший общий делитель чисел M и N. Используйте теорему Эйлера: Если M делится на N, то НОД (N, M)=N, - C (СИ)
Формулировка задачи:
решить нужно с функциями пользователя на языке си.
вот, я около этого... помогите, будьте бобры
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include<conio.h>
int NOD (int m, int n)
{
int t;
if(m % n == 0)
{
printf("nod: %d", n); return n;
}
else
{
t = (n % m, m); return t;
}
}
int main ()
{
int m, n, p;
printf("enter m "); scanf("%d", &m);
printf("enter n "); scanf("%d", &n);
p = NOD(m, n); printf("%d", p);
getch();
return 0;
}Решение задачи: «Найти наибольший общий делитель чисел M и N. Используйте теорему Эйлера: Если M делится на N, то НОД (N, M)=N,»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
int NOD (int m, int n)
{ int t;
if (m<n) {t=m; m=n; n=t;}
if (m==0 || n==0) return 1;
if (m%n) return NOD(m-n,n);
return n ;
}
int main ()
{
int m, n, p;
printf("enter m "); scanf("%d", &m);
printf("enter n "); scanf("%d", &n);
p = NOD(m, n); printf("%d", p);
getch();
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек: iostream.h и conio.h
- Определение функции для поиска НОД (наибольший общий делитель) чисел M и N, с использованием алгоритма Эйлера.
- Проверка условий для корректной работы функции: если M меньше N, то значения переменных t и m меняются местами, чтобы в дальнейшем использовать функцию для N и m.
- Если M или N равны нулю, то НОД равен 1.
- Если M не делится на N без остатка, то функция рекурсивно вызывается для вычисления НОД(M-N,N).
- Функция возвращает значение N.
- Ввод значений переменных m и n с помощью функции scanf.
- Вычисление и вывод значения НОД(m,n) с помощью функции NOD.
- Получение значения функции getch для завершения работы программы.
- Возврат значения 0 для успешного завершения программы.