欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

利用递归求n以内的素数之和

程序员文章站 2022-03-09 15:14:49
...

实现思路

  • 首先判断是否为素数
  • 若是素数递归相加
  • 返回最后的结果

代码块实现

  • 判断素数函数
     
int sushu(int n)
{
    int i = 0;
    int flag = 1;//标记变量,若为1是素数
    for(i = 2; i<n; i++)
    {
       if(n%i == 0)
        {
            flag = 0;//为0不是素数
            break;
            //return 0;
        }
    }
    if(n == 1)//n=1的时候不能进入循环判断,只能自己判断
    {
        flag = 1;
    }
    /*循环之后判断是不是素数*/
    if(flag == 0)
    {
        return 0;//不是素数则返回0,为后面相加做准备
    }
    if(flag == 1)
    {
        return n;//为素数则返回相加
    }
}
  • 递归函数
int fac(int n)
{
    int sum = 0;
    int f=0;
    if(n == 1)//递归为1后返回return 1;
    }
    /*判断是不是素数*/
    if(sushu(n) == n)
    {
        sum = fac(n-1) + n;//若为素数则相加
        return sum;//返回相加之和
    }
    else//不为素数则不断进入递归
    {
        f = fac(n-1);
        return f;
    }
}
  • 返回最后的结果
int main()
{
    int i ,j ;
    int n;
    int sum = 0;
    printf("请输入n:\n");
    scanf("%d",&n);
    sum = fac(n);
    printf("\nsum = %d\n",sum);

}
  • 最后结果
    利用递归求n以内的素数之和
    递归主要是层层进入,最后找到最后一层的内容后再逐步往上返回
相关标签: 递归