一、给一个数 N,判定这个数是否是素数。
1、先让面试者说素数的定义,如果不知道可以提示素数的定义
2、最差的面试者,会没有思路,这是很可怕的,大学第一学期学完,应该学会这个题
3、一般的面试者,能比较费劲地写出正确的程序,但是可能存在边界、标记等问题。
4、写出程序出来,可以进一步问,优化的空间,在哪里,所谓优化,无非就是时间和空间复杂度。
5、只有少数的面试者,能进行几轮优化
6、有训练的面试者可能知道一些特定的高效方法
<?php
check_ss(8);
function check_ss($num) {
for($i=2; $i < $num ; $i++) {
if($num % $i == 0) {
echo $num. '不是素数';
exit;
}
}
echo $num. '是素数';
}
二、给一个数 N,把 2 到 N 之间的素数输出出来
1、这个题比上面这个难度加大了一层
2、可以限定,不让其使用子函数,增加逻辑上的复杂度
3、其他的,同样一层层考优化的方法
<?php
$no=0;//用于标记经检验前后是否是素数,0表示是;1不是;
for($i=2;$i<=1000;$i++){//循环2-1000
for($j=2;$j<$i;$j++){//检验当前$i是否是素数
if($i%$j==0){
$no=1;//如果取余得0,不是素数,改值为1
}
}
if($no==0){echo $i;}//经过检验后如果$no仍为0,则$i是素数。
}
?>
三、写出三角状的 9*9 乘法表
1、这个题目面向基础比较差的面试者
2、最差的面试者,也会说没有思路,在学校会写,现在忘记了
3、比较一般的能写出来,更进行一步的,可以让其用几种循环来写,写倒三角
4、如果都没有问题,循环思维逻辑值得肯定
<?php
for($a = 1; $a <10; $a++){
echo "<table>";
echo "<tr>";
for ($b=1; $b <= $a; $b++) {
echo "<td>";
echo "$a*$b=".$a*$b;
echo "</td>