Найти наибольший общий делитель чисел 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 для успешного завершения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д