用递归函数判断一个自然数是否为素数(0表示不是 1表示是)的C语言代码
时间: 2024-02-18 07:02:53 浏览: 84
以下是实现了题目要求的C语言代码:
```c
#include <stdio.h>
int isPrime(int n, int i) {
if (i == 1) {
return 1;
}
else if (n % i == 0) {
return 0;
}
else {
return isPrime(n, i - 1);
}
}
int main() {
int n = 17;
if (isPrime(n, n - 1)) {
printf("%d是素数\n", n);
}
else {
printf("%d不是素数\n", n);
}
return 0;
}
```
`isPrime`函数用于判断一个自然数`n`是否为素数,`i`为当前测试的因子,初始值为`n-1`。如果`i`递减到1时仍然没有找到任何因子,则说明`n`是素数,返回值为1;如果在递归过程中找到了`n`的一个因子,则说明`n`不是素数,返回值为0。主函数中调用`isPrime`函数判断一个自然数是否为素数,并输出相应的结果。
相关问题
用C语言判断一个给定的正整数是否素数。 输入格式: 输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于231的需要判断的正整数。 输出格式: 对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No。
在C语言中,我们可以编写一个函数来判断一个正整数是否为素数。首先,我们知道素数定义为只有1和它本身两个正因数的大于1的自然数。下面是一个简单的程序示例:
```c
#include <stdio.h>
// 判断是否为素数的辅助函数
int isPrime(int num) {
if (num <= 1) // 1不是素数,0也不是
return 0;
for (int i = 2; i * i <= num; i++) { // 只需检查到根号n即可
if (num % i == 0)
return 0; // 如果找到因子,就不是素数
}
return 1; // 没有找到因子,所以是素数
}
int main() {
int N;
scanf("%d", &N);
for (int i = 0; i < N; i++) {
int num;
scanf("%d", &num);
if (isPrime(num))
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
```
在这个程序中,`isPrime`函数用于递归地检查数字是否为素数,从2开始一直除到该数的平方根,如果找到能整除它的数,那就不是素数。主函数部分读取用户输入的每一个正整数,并调用`isPrime`函数,然后输出相应的结果。
c语言用递归函数判断一个自然数是否为素数(0表示不是 1表示是
好的,可以用以下递归函数来实现判断自然数是否为素数:
```c
int isPrime(int n, int i){
// 如果 n 小于 2,返回 0,表示不是素数
if(n < 2){
return 0;
}
// 如果 i 大于等于 n,表示已经遍历完所有可能的因子,n 为素数,返回 1
if(i >= n){
return 1;
}
// 如果 n 能够被 i 整除,表示 n 不是素数,返回 0
if(n % i == 0){
return 0;
}
// 否则,继续遍历下一个可能的因子
return isPrime(n, i+1);
}
```
其中,n 表示要判断的自然数,i 表示当前遍历的可能的因子,初始值为 2。调用该函数时,传入 n 和 2 作为参数即可。如果函数返回值为 1,表示 n 是素数;如果返回值为 0,表示 n 不是素数。
阅读全文