php实现的经典算法40例

这篇博客包含了多个编程挑战,涉及斐波那契数列、素数判断、水仙花数、条件运算、最大公约数与最小公倍数、循环与递归等算法。通过解决这些题目,可以锻炼和提升编程逻辑和数学应用能力。

【程序1】   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?   
1.程序分析:   兔子的规律为数列1,1,2,3,5,8,13,21....   
2  就是第三个数是前两个数字的和,既是经典的菲波那切数列

    function actionFblist($n)
    {
        // 1,1,2,3,5,8,13
	// $n 为第n个月
        $arr = [1,1];
        if($n < 2)
            return false;
 
 
        for ($i=2;$i<=$n+1;$i++)
        {
            $arr[$i] = $arr[$i-1] + $arr[$i-2];
        }
        var_dump($arr);
        echo $arr[$n+1];
    }

【程序2】   题目:判断101-200之间有多少个素数,并输出所有素数。   
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,   
则表明此数不是素数,反之是素数。

    public function actionIsPrimeNumber()
    {
        $arr = [];
        for ($i=101;$i<=200;$i++)
        {
            $flag = true;
            for ($j = 2;$j<=sqrt($i);$j++)
            {
                if($i % $j == 0)
                {
                    $flag = false;
                }
            }
 
            if($flag == true)
                $arr[] = $i;
        }
        var_dump($arr);
    }

【程序3】   题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。   
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

    public function actionWaterFlower()
    {
        $re = [];
        for($i = 100;$i<= 999;$i++)
        {
            $hundred = floor($i / 100 );     // 获取百位数字
            $ten = floor(($i %100 ) / 10 );  // 获取十位数字
            $one = floor($i % 100 % 10);     // 获取各位数字
 
            if((pow($hundred,3)  + pow($ten,3) + pow($one,3) ) == $i )
            {
                $re[] = $i;
            }
        }
        var_dump($re);
 
    }

【程序5】   题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。   
1.程序分析:(a> b)?a:b这是条件运算符的基本例子。

    public function actionGetScore()
    {
        $score = 90;
        if($score <0 || $score > 100)
            return false;
        
        $re = $score >= 90 ? 'A' : ($score >= 60 ?  'B' :'C');
        var_dump($re);
    }

【程序6】   题目:输入两个正整数m和n,求其最大公约数和最小公倍数。   
1.程序分析:利用辗除法。   
最大公约数:

public class CommonDivisor{
    public static void main(String args[])
    {
        commonDivisor(24,32);
    }
    static int commonDivisor(int M, int N)
    {
        if(N<0||M<0)
        {
            System.out.println("ERROR!");
            return -1;
        }
        if(N==0)
        {
            System.out.println("the biggest common divisor is :"+M);
            return M;
        }
        return commonDivisor(N,M%N);
    }
}
最小公倍数和最大公约数:
import java.util.Scanner; 
public class CandC 
{ 
//下面的方法是求出最大公约数
public static int gcd(int m, int n) 
{ 
while (true) 
{ 
if ((m = m % n) == 0) 
return n; 
if ((n = n % m) == 0) 
return m; 
} 
} 
public static void main(String args[]) throws Exception 
{ 
//取得输入值
//Scanner chin = new Scanner(System.in); 
//int a = chin.nextInt(), b = chin.nextInt(); 
int a=23; int b=32;
int c = gcd(a, b); 
System.out.pri
PHP经典100.,php教材实,从基础到实践,由浅到深... 24:经典循环子 25:for的高级运用 26:简单的函数 27:有返回值的函数 28:有默认参数的函数 29:判断整数 30:动态调用函数 31:一个简单的数组 32给数组增加元素 33初始化数组 34获取数组中的元素 35创建一个多维数组 36PHP 4.0实现表格状打印 37实现背景颜色的改变 38文件上传 39查看PHP的环境变量 40使用文件包含 41打开本地或者远程文件 42读取文件内容 43访问文件常见属性 44调用文本文件内容 45PHP判断文件是否存在 46访问文件时间属性 47创建目录函数 48浏览目录 49取得浏览器的信息 50PHP相关信息 51常用的数值判断函数 52数组排序的使用 53常用数组函数 54常用字符串函数(一) 55常用字符串函数(二) 56常用字符串函数(三) 57编码和解码函数 58常用数学函数(一) 59常用时间函数(二) 60日期检查函数 61常用时间函数(一) 62常用时间函数(二) 63程序暂停函数 64图像函数 65session函数 66拼写检查 67循环中调用函数 68转换所有的标记为PHP 69取得页面的链接 70对分查找法 71文件上传界面 72用PHP4实现顶级域名查询 73日期合法性检查 74检查一个邮政编码 75得到100个随机数字 76得到十个随机数 77分成数组 78计算星座的函数 s 79检测OICQ用户是否在线 80检测操作系统和浏览器类型 81用PHP4连接一个mysql数据库操作的演示 82//本是用PHP4实现向一个mysql数据表添加记录, 83//本是用PHP4实现修改一个mysql数据表 84本是用PHP4实现删除一个mysql数据记录 85//本是用PHP4实现向一个ODBC数据表添加记录 86//本是用PHP4实现向一个ODBC数据表添加记录 87用户登录,注册新用户 88用COOKIE保存投票人的投票记录 89php4+mysql 留言本 90文件上传处理 91页面浏览计数器 92链接 93在线聊天 94简单的新闻公告栏 95PHP目录树演示 96访客留言本 97实现在线投票 98世纪万年历 99php挖地雷 100文件管理系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值