最近在CSDN上看到一道题,据说淘汰了85%的面试者(只是据说而已)。心血来潮,随便写个算法,该算法很简单,主要就是考察应聘者是否注重细节。题干如下:
依序遍历0到100闭区间内所有的正整数,如果该数字能被3整除,则输出该数字及‘*’标记;如果该数字能被5整除,则输出该数字及‘#’标记;如果该数字既能被3整除又能被5整除,则输出该数字及‘*#’标记。
该题主要考察了如下几点。
1. 正整数。不知这题怎么出了,这是数学的概念。看到有很多答案从0开始扫描,0是整数,非正非负,应该从1、2或3开始扫描都可以。
2. 题目给出了3个条件,应该先考虑条件苛刻的,也就是同时被3和5整除的,然后再考虑被3或被5整除的。
3. 闭区间(这TM的玩文字游戏呢!)。所以不能用for(int i = 0; i < 100;i++)。有很多家伙习惯了,条件都是用“<”。
下面是题目的答案。
public class SF { public static void main(String[] args) { for(int i = 1; i<= 100; i++) { if(i % 3 == 0 && i % 5 ==0) { System.out.print("*#"); } else if(i % 3 == 0) { System.out.print("*"); } else if(i % 5 == 0) { System.out.print("#"); } } } }
最后输出的结果如下:
*#**#**#*#**#**#*#**#**#*#**#**#*#**#**#*#**#**#*#**#