一些程序的小算法

1.输入某年某月某日,判断这一天是这一年的第几天?星期几?
//思路是 计算(当前月份-1)个月的总天数,加上当前月的几天
$arr = ['0','31','59','90','120','151','181','212','243','273','304','334'];//天数是固定的 唯一的变量就是2月是否为闰月
$list = date("Y-m-d");//"2017-05-06"
$list = explode("-",$list);
$res = 0;
//判断是不是闰月
if($list[0]%400 == 0 || ($list[0]%100 != 0 && $list[0]%4 == 0)){
if($list>2){
$res = 1;
}
}
$day = $arr[intval($list[1])-1] + $res+intval($list[2]);
$number = $day%7;
switch ($number){
case 1;$num = '日';break;
case 0;$num = '6';break;
default:
$num = $number-1;
}
//echo "当前是今年的第".$day ."天<br>";
//echo "星期".$num."<br>";

2.九九乘法表
for($i=1;$i<10;$i++){
//不等于的话 1*1类似这种的项就没有了
for($j=1;$j<=$i;$j++){
echo "$i*$j=". $i * $j ." ";
}
}


3.输入三个整数x,y,z,请把这三个数由小到大输出。
$arr = ['125','60',"40"];
$len = count($arr);
//第一层控制循环次数 n-1
for($i=0;$i<$len-1;$i++){
//第二层进行比较 比较次数随着$i的增加而减少
for($j=0;$j<$len-$i-1;$j++){
//比较条件
if($arr[$j]>$arr[$j+1]){
$temp = $arr[$j+1];
$arr[$j+1] = $arr[$j];
$arr[$j] = $temp;
}
}
}
4.延迟10s输出时间
sleep(10);
echo date("Y-m-d H:i:s");

5.所谓质数或称素数,就是一个正整数,除了本身和 1 以外并没有任何其他因子.判断101-200之间有多少个素数,并输出所有素数。
//从2开始进行除法操作,除到自己为止
function check_ss($num) {
for($i=2; $i < $num ; $i++) {
if($num % $i == 0) {
return false;
}
}
echo $num. '是素数';echo "<br>";
}
for($i = 101;$i<=200;$i++){
check_ss($i) ;
}


6.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数, 其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
$arrs = [];
for($i = 100;$i<1000;$i++){
for($j=0;$j<3;$j++){
array_push($arrs,pow(intval(substr($i,$j,1)),3)) ;//pow()函数返回 x 的 y 次方
}
if(array_sum($arrs) == $i){
echo $i. '是水仙花数';
echo "<br>";
}
unset($arrs);//清空数组
$arrs = [];//重新定义
}
闲来无事写的一些小算法。
posted @ 2017-06-06 15:46  逗逗ilove  阅读(207)  评论(0编辑  收藏  举报