java逻辑算法题-面试笔试题
/** * 兔子繁殖 斐波那契数列有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少
分析第一个月 一对 第二个月 还是一对 第三个月 2对 第四个月 3对 。。5..8..13
*/ @Test public void testFibonacci() { List<Integer> integers = new ArrayList<>(); for (int i = 1; i <= 10; i++) { if (i == 1 || i == 2) { integers.add(1); } else { integers.add(integers.get(integers.size() - 1) + integers.get(integers.size() - 2)); } } System.out.println(integers.toString()); } /** * 判断0-100之间有多少个素数,并输出所有素数
判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 */ @Test public void testPrime() { int j; for (int i = 0; i <= 100; i++) { if (i % 2 == 0 && i != 2) { continue; //偶数和1排除 } System.out.println(i); for (j = 2; j <= Math.sqrt(i); j++) { if (i % j == 0) { System.out.println(i); break; } } } } /** * 九九乘法表 */ @Test public void testNine() { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + "*" + i + "=" + i * j); System.out.print(" "); } System.out.println("\t"); } } /** * 水仙花数
打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。 */ @Test public void shuixianhua() { for (int i = 100; i <= 999; i++) { int a = i % 10; int b = i / 10 % 10; int c = i / 100; if (a * a * a + b * b * b + c * c * c == i) { System.out.println(i); } } } /** * 查询某个数所有的因数
将一个正整数分解质因数。例如:输入90,输出2 3 5 (90=2*3*3*5)。
程序分析:对num进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于num,则说明分解质因数的过程已经结束,打印出即可。
(2)如果num > k,但n能被k整除,则应打印出k的值,并用num除以k的商,作为新的正整数你num,重复执行第一步。
(3)如果num不能被k整除,则用k+1作为k的值,重复执行第一步 */ @Test public void testYinShu() { int num = 90; int k = 2; while (num >= k) { if (num == k) { System.out.print(num); System.out.print(""); } else if (num % k == 0) { num = num / k; System.out.print(k); System.out.print(""); } k++; } }
努力提高自己的技术,不忘初心