面试现场:求素数
前两天被某家公司"骗"去面试(实际上是让我做笔试),随便答了答然后让我约了电话面。
然后去了让我笔试,然后就是介绍公司(心态崩溃),不过来了,做!当天晚上约第二天面试
面试官:有个笔试题是求a-b范围的所有素数,你是怎么写的
我:暴力
面试官:怎么暴力
我:一个函数判断一个int数是不是素数,然后循环调用
面试官:怎么判断
我:就从2-n-1遍历。如果取余非0则返回false,否则继续,最后返回true
面试官:可以优化吗
我:可以,上限可以改成n/2,因为能被n-1整除也肯定能被n/2整除
面试官: 这...也行,还能再优化上限吗
我:可以,我想想,面试官在暗示我,上限还可以优化。既然除2还能优化,那怎么样呢(脑子飞速运转),有了,除2可以,那么除3、除4、除5都可以,这个上限是啥呢。哦,肯定是n开平方咯。答:上限就是i的平方小于等于n嘛
面试官:行,这个就先这样吧。继续下面的问题,巴拉巴拉,疯狂吹逼
附加代码如下:
public boolean fun(int n){ if(n <= 3) return true; for (int i = 2;i * i <= n;i++){ if (n % i == 0) return false; } return true; }
一天以后,收到了offer...