Определить функцию, проверяющую, является ли заданная дробь несократимой - C (СИ)
Формулировка задачи:
Здравствуйте.
Помогите, пожалуйста, получить допуск к экзамену по программированию.
Необходимо завтра сдать задания, а я их ещё не сделал.
Вам будет личная полезная практика, а мне допуск.
Вот собственно задания:
2) Определить функцию, проверяющую, является ли заданная дробь несократимой. (Дробь задается двумя натуральными числами – числителем и знаменателем). Найти все не-сократимые дроби, заключенные между 0 и 1, знаменатели которых не превышают заданное число n.
Заранее спасибо.
Решение задачи: «Определить функцию, проверяющую, является ли заданная дробь несократимой»
textual
Листинг программы
#include<stdio.h> #include <conio.h> void swap(int *a, int *b){ int c = *a; *a = *b; *b = c; } void sort2(int *a, int *b){ if(*b > *a){ swap(a, b); } } int nod(int a, int b){ int c; sort2(&a, &b); while(b != 0){ c = a; a = b; b = c % b; } return a; } int main(void){ int n = 0; int i = 0; printf("n = "); scanf("%i", &n); for(i = 1; i < n; i++){ if(nod(i, n) == 1){ printf("%i/%i ", i, n); } } _getch(); return 0; }
Объяснение кода листинга программы
- Включаются заголовочные файлы stdio.h и conio.h
- Определяется функция swap, которая меняет местами значения двух указателей
- Определяется функция sort2, которая сортирует два числа a и b, если b больше a, то они меняются местами с помощью функции swap
- Определяется функция nod, которая находит наибольший общий делитель (НОД) двух целых чисел a и b
- В функции main считывается число n с помощью scanf
- В цикле от 1 до n-1 вычисляется НОД для каждого числа от 1 до n-1 и выводится на экран в формате
число/n
- Завершается программа с помощью функции _getch
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д