介绍
在本实验中,我们将学习如何编写一个 C 程序,使用递归来检查一个数是质数还是合数。质数是指只能被 1 和它本身整除的数,而合数则是指非质数的数。我们将使用递归来编写这个程序,递归是一种通过将问题分解为更小、更简单的问题来解决问题的技术。
在本实验中,我们将学习如何编写一个 C 程序,使用递归来检查一个数是质数还是合数。质数是指只能被 1 和它本身整除的数,而合数则是指非质数的数。我们将使用递归来编写这个程序,递归是一种通过将问题分解为更小、更简单的问题来解决问题的技术。
我们将从要求用户输入一个正整数开始,使用 scanf
函数来检查该数是质数还是合数。在 main.c
文件的 int main()
函数中添加以下代码:
#include <stdio.h>
int main()
{
int num;
printf("请输入一个正整数: ");
scanf("%d", &num);
return 0;
}
在这一步中,我们将编写递归函数来检查数字是质数还是合数。该函数接受两个参数——要检查的数字和一个从数字除以 2 开始的计数器变量。如果计数器达到 1,函数返回 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("请输入一个正整数: ");
scanf("%d", &num);
prime = isPrime(num, num/2);
if (prime == 1) {
printf("%d 是一个质数。\n", num);
} else {
printf("%d 是一个合数。\n", num);
}
return 0;
}
在这一步中,我们将编译并运行程序。打开终端并导航到 main.c
文件所在的目录。在终端中输入以下命令以编译程序:
gcc main.c -o main
输入以下命令以运行程序:
./main
当提示时,输入一个正整数并按 Enter 键。程序将输出该数字是质数还是合数。
在本实验中,我们学习了如何编写一个 C 程序,使用递归来检查一个数是质数还是合数。我们还学习了如何使用 scanf
函数获取用户输入,编写递归函数来检查数字是质数还是合数,并将结果输出给用户。递归是一种有用的技术,适用于将问题分解为更小、更简单的问题来解决的场景。