定义一个函数,该函数可以求两个正数的最小公倍数。——倍数就是能被一个数整除的数,最小公倍数就是能同时被这两个数整除的最小的那个。比如6和8的最小公倍数是24,15和20的最小公倍数是60。
解题思路:
提示1:本题是一个典型数学应用的计算机解决方案,利用的是公倍数的基本概念加上程序算法中的循环递增机制来实现。当然,本题还要求做到更高一层,那就是将求解过程包装成函数,这样为以后的同类问题提供了便捷的解决方式。
提示2:首先,根据题意,自然是需要定义一个函数,并且带2个参数,代表要求解最小公约数的两个正整数。
提示3:然后,函数中的核心代码就是:从其中一个数开始进行遍历循环,直到两个数的乘积为止,去进行整除,找出能同时进行整除的第一次出现的那个,就是结果。
提示4:但我们考虑更高效率的话,我们需要先找出两个数中的较大的那个(同时也找出更小的那个),然后,我们的循环,直接从更大的那个开始,并且递增也是以该较大数的倍数进行。这样做的结果,我们既可以做到更少的循环次数,也可以只去对更小的那个数进行取模运算。如果发现更小的数可以整除,那该数就是我们要找的数了。
function Gongbeishu( $n, $m ){
if(!is_int($n) || !is_int($m)){
return false; //不是整数,返回false
}
if($n <= 0 || $m <= 0){
return false; //不是正整数,返回false
}
$max = $n >= $m ? $n : $m;
$min = $n <= $m ? $n : $m;
for($i = $max; $i <= $max * $min; $i+= $max){
if( $i % $min == 0 ){
return $i; //这就是要求的最小公倍数
}
}
}
定义一个函数,该函数能够判断一个数字是否是一个素数(也叫质数),是就返回true,否则就返回false。并利用该函数的功能,输出2-200之间的所有素数。
注:素数就是只能被1和它本身整除的数。
解题思路:
提示1:此题是一个典型的函数应用题,其模式是:先定义一个具有某种功能函数,而后,在应用的需求代码中,调用该函数以获得结果。本题的代码分两块:函数定义代码,以及2~200的循环判断代码。
提示2:先定义一个能够判断一个数字是否是素数的函数。素数的判断依据是:从1到该数本身依次循环,记录能整除它的数的个数,如果最后只有2个能整除,则该数就是素数。整个过程,在函数中判断个数后,就可以返回真或假。
提示3:再实现一个基本的2到200的循环,循环中,对每一个数字传递给前述定义的函数,该函数就可以判断该数字是否一个素数,如果是,就输出,否则就继续下一轮。
function isLeapYear( $num ){
if(is_numeric( $num ){ //先判断是否是一个数字
//然后才判断是否是一个素数
$count = 0; //用于记录能够整除的个数
for( $i = 1; $i <= $num; $i++){
if($num % $i == 0){ //能整除
$count++; //就计数加1
}
}
if($count == 2){ //只有两个能整除,也就是1和它自身,就是素数
return true;
}
else{
return false;
}
}
else{
return false;
}
}
for($i = 2; $i <= 200; $i++){
if( isLeapYear( $i ) == true ) {
echo $i . "," ;
}
}