c语言用递归函数判断一个自然数是否为素数,最后结果输出0表示不是,1表示是
时间: 2024-02-21 18:56:53 浏览: 94
好的,以下是一个使用递归函数判断自然数是否为素数的 C 代码,最后结果输出0表示不是素数,1表示是素数:
```c
#include <stdio.h>
int is_prime(int n, int i) {
if (n <= 2) {
return n == 2 ? 1 : 0;
}
else if (n % i == 0) {
return 0;
}
else if (i * i > n) {
return 1;
}
else {
return is_prime(n, i+1);
}
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
if (is_prime(n, 2)) {
printf("%d是素数\n", n);
}
else {
printf("%d不是素数\n", n);
}
return 0;
}
```
在这个程序中,`is_prime` 函数的第一个参数 `n` 是要判断的自然数,第二个参数 `i` 是递归过程中的计数器,初始值为 2。函数首先判断 `n` 是否小于等于 2,如果是,则判断 `n` 是否等于 2,是则返回 1,不是则返回 0。如果 `n` 大于 2,则判断 `n` 能否被 `i` 整除,如果能,则返回 0。如果 `n` 不能被 `i` 整除,则判断 `i` 的平方是否大于 `n`,如果大于,则返回 1,否则递归调用函数 `is_prime`,将 `i` 的值加 1。
在 `main` 函数中,用户输入要判断的自然数,然后调用 `is_prime` 函数进行判断,如果结果为真,则输出该数是素数,否则输出该数不是素数。
阅读全文