Простое или составное число с использованием рекурсии

CCBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабе мы научимся писать программу на C, которая с использованием рекурсии проверяет, является ли число простым или составным. Простое число - это число, которое делится только на 1 и само на себя, в то время как составное число - это число, которое не является простым. Мы будем использовать рекурсию для написания программы, которая представляет собой метод решения задач путём их разбиения на более мелкие и простые задачи.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/ControlFlowGroup -.-> c/if_else("If...Else") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FunctionsGroup -.-> c/function_parameters("Function Parameters") c/FunctionsGroup -.-> c/recursion("Recursion") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123309{{"Простое или составное число с использованием рекурсии"}} c/if_else -.-> lab-123309{{"Простое или составное число с использованием рекурсии"}} c/function_declaration -.-> lab-123309{{"Простое или составное число с использованием рекурсии"}} c/function_parameters -.-> lab-123309{{"Простое или составное число с использованием рекурсии"}} c/recursion -.-> lab-123309{{"Простое или составное число с использованием рекурсии"}} c/user_input -.-> lab-123309{{"Простое или составное число с использованием рекурсии"}} c/output -.-> lab-123309{{"Простое или составное число с использованием рекурсии"}} end

Получение ввода от пользователя

Начнём с того, чтобы попросить пользователя ввести положительное целое число для проверки, является ли оно простым или составным, с использованием функции scanf. Добавьте следующий код в файл main.c внутри функции int main():

#include <stdio.h>

int main()
{
    int num;
    printf("Enter a positive integer: ");
    scanf("%d", &num);
    return 0;
}

Написание рекурсивной функции для проверки числа

В этом шаге мы напишем рекурсивную функцию для проверки, является ли число простым или составным. Эта функция принимает два аргумента: число для проверки и переменную-счётчик, которая начинается с числа, делённого на 2. Если счётчик достигает 1, функция возвращает 1, что означает, что число простое, иначе функция делает рекурсивный вызов самой себя с уменьшенной переменной-счётчиком. Если в какой-то момент число делится на переменную-счётчик без остатка, функция возвращает 0, что означает, что число составное. Добавьте следующий код в конец файла main.c:

int isPrime(int n, int c)
{
    if (c == 1) {
        return 1;
    } else {
        if (n % c == 0) {
            return 0;
        } else {
            return isPrime(n, c - 1);
        }
    }
}

Проверка и вывод результата

В этом шаге мы вызовем функцию isPrime для проверки, является ли число простым или составным. В зависимости от результата функции мы выведем соответствующее сообщение пользователю. Добавьте следующий код в конец файла main.c для завершения программы:

int main()
{
    int num, prime;
    printf("Enter a positive integer: ");
    scanf("%d", &num);
    prime = isPrime(num, num/2);
    if (prime == 1) {
        printf("%d is a prime number.\n", num);
    } else {
        printf("%d is a composite number.\n", num);
    }
    return 0;
}

Сборка и запуск программы

В этом шаге мы скомпилируем и запустим программу. Откройте терминал и перейдите в директорию, где находится файл main.c. Добавьте следующую команду в терминал для компиляции программы:

gcc main.c -o main

Добавьте следующую команду для запуска программы:

./main

Введите положительное целое число при запросе и нажмите Enter. Программа выведет, является ли число простым или составным.

Резюме

В этом практическом занятии мы научились писать программу на C, которая проверяет, является ли число простым или составным, с использованием рекурсии. Мы также узнали, как использовать функцию scanf для получения ввода от пользователя, писать рекурсивную функцию для проверки, является ли число простым или составным, и выводить результат пользователю. Рекурсия - это полезный метод для решения задач, которые требуют разбиения их на более мелкие и простые задачи.