Найти все простые несократимые дроби, заключенные между 0 и 1 - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Найти все простые несократимые дроби, заключенные между 0 и 1, знаменатели которых не превышают 7 (дробь задается двумя натуральными числами – числителем и знаменателем). Помогите плизз, нужно написать на языке Си, желательно совместимо с программой TurboC

Решение задачи: «Найти все простые несократимые дроби, заключенные между 0 и 1»

textual
Листинг программы
#include <stdio.h>
 
const int n = 7;
 
void Farey(int ltP, int ltQ, int rgP, int rgQ)
{
    int P, Q;
    if(ltQ <= n && rgQ <= n)
    {
        P = ltP + rgP;
        Q = ltQ + rgQ;
        Farey(ltP, ltQ, P, Q);
        if(Q <= n) printf("%d/%d\n", P, Q);
        Farey(P, Q, rgP, rgQ);
    }
}
int main(void)
{
    Farey(0, 1, 1, 1);
    return 0;
}

Объяснение кода листинга программы

В данном коде реализована рекурсивная функция для поиска простых несократимых дробей в заданном диапазоне от 0 до 1.

  1. В функции main вызывается функция Farey с аргументами 0, 1, 1, 1, что инициирует процесс поиска дробей.
  2. В функции Farey в первую очередь проверяется условие ltQ <= n && rgQ <= n, которое гарантирует, что дробь с такими числителем и знаменателем еще не была выведена (т.е. не является простой несократимой дробью). Если это условие выполняется, то выполняются следующие действия:
    • Переменные P и Q получают суммы числителей и знаменателей соответственно: P = ltP + rgP и Q = ltQ + rgQ.
    • Вызывается функция Farey с новыми значениями аргументов ltP, ltQ, P, Q, что позволяет искать более мелкие дроби.
    • Если значение Q не превышает n, то выводится текущая дробь в формате числитель/знаменатель с помощью команды printf.
    • После этого вызывается функция Farey с аргументами P и Q, что позволяет искать более мелкие дроби.
  3. Если условие ltQ <= n && rgQ <= n не выполняется, то процесс поиска дробей завершается.
  4. В функции main после вызова функции Farey ничего не происходит, поэтому она просто завершается. Список действий:
  5. Вызов функции Farey в main с аргументами 0, 1, 1, 1.
  6. Проверка условия ltQ <= n && rgQ <= n.
  7. Вычисление значений P и Q.
  8. Вызов функции Farey с новыми значениями аргументов ltP, ltQ, P, Q.
  9. Проверка условия Q <= n.
  10. Вывод текущей дроби.
  11. Вызов функции Farey с аргументами P и Q.
  12. Повторение шагов 4-7 до тех пор, пока не будет выполнено условие Q <= n.
  13. Возврат в main и завершение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы