求前n个质数之和

php求前n个质数之和@TOC

求前n个质数之和

前段时间参加一个考试,要求使用php写出求前n个质数的和的算法。

代码如下

<?php
/**
 * @param $n  //这个表示几个数字的质数的和,即题目中的n
 * @param $increase //循环次数,起始值是2,莫修改
 * @param $count //循环质数的次数,起始值是0,莫修改
 * @param $add_num  //总数,起始值是0,莫修改
 * @return mixed
 * author fengyuan
 * date 2020/8/28 1:53
 */
 function calculate($n,$increase=2,$count=1,$add_num=0){

        $flag_in=0;//标识能被符合的条件 1和它本身
        $flag_out=1; //标识不符合的条件  除了1和其他数

            for ($i=1;$i<=$increase;$i++){
                if($i!=1&&$i!=$increase){
                    //满足1和它本身可以被整除的情况下,我们的flag_out会一直满足true的情况
                    $result=$increase%$i;
                    if(!$result){
                        $flag_out=0;
                    }
                }else{
                    //满足除了1和它本身都不能够被整除的情况下,我们的flag_in一直都是0
                    $result=$increase%$i;
                    if($result){
                        $flag_in=1;
                    }
                }
            }

        if($flag_out&&!$flag_in){
            //是质数的情况
            if($n==$count){
                //当所需要的质数的个数满足了我们,我们则跳出该递归
                $add_num=$add_num+$increase;
                echo $add_num;
                die();
            }else{
                //不满足的情况,我们继续进行递归,直到满足情况为止
                $add_num=$add_num+$increase;
                $count++;
                $increase++;
                calculate($n,$increase,$count,$add_num);
            }
        }else{
            //不是质数的情况
            $increase++;
            calculate($n,$increase,$count,$add_num);
        }


    }

    //调用函数执行
    calculate(5);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值