C语言调用自身函数求100以内的所有素数
时间: 2023-09-08 22:17:07 浏览: 156
可以使用C语言编写一个递归函数来求100以内的所有素数。具体实现如下:
```c
#include <stdio.h>
int is_prime(int n, int i)
{
if (n <= 2)
{
return (n == 2) ? 1 : 0;
}
if (n % i == 0)
{
return 0;
}
if (i * i > n)
{
return 1;
}
return is_prime(n, i + 1);
}
void print_primes(int n)
{
if (n > 2)
{
print_primes(n - 1);
}
if (is_prime(n, 2))
{
printf("%d ", n);
}
}
int main()
{
print_primes(100);
return 0;
}
```
这段代码的思路是:先定义一个`is_prime`函数来判断一个数是否是素数,然后用递归的方式打印出100以内的素数。`is_prime`函数的参数`n`表示待判断的数,`i`表示当前除数,判断`n`是否是素数的方法是从2开始,依次判断`n`能否被2到$\sqrt{n}$之间的数整除,如果能,则不是素数,返回0;如果不能,则是素数,返回1。在`print_primes`函数中,先递归调用打印出小于等于`n-1`的素数,然后判断`n`是否是素数,如果是,则打印出来。最后在`main`函数中调用`print_primes(100)`即可求出100以内的所有素数。
阅读全文