【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问2年内每个月的兔子总数为多少?
分析:
可把兔子分类,即新生的兔子,出生两个月的兔子(下个月即能开始繁殖的),成年兔子(开始繁殖)。
新生 两个月 成兔 总数
1 0 0 1
0 1 0 1
1 0 1 2
1 1 1 3
2 1 2 5
3 2 3 8
……
可以看到结果是Fibonacci数列。
- /**
- * @author Geek_Soledad
- *
- */
- public class Fibonacci {
- public static void main ( String []args) {
- int f1 = 1;
- int f2 = 1;
- for ( int i = 1; i <= 24 ; i++) {
- System.out.println("第" + i + "个月有" + f1 + "只兔子。");
- f2 +=f1;
- f1 = f2 - f1;
- }
- }
- }
【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
- /**
- * @author Geek_Soledad
- *
- */
- public class Primes {
- public static void main ( String []args) {
- int num = 0;
- for ( int n = 101; n < 200; n += 2) {
- if (isPrimes( n)) {
- System.out.print( " " + n);
- num++;
- }
- }
- System.out.println("共有素数" + num + "个");
- }
- static boolean isPrimes ( int n) {
- for ( int i = 3; i < n; i += 2) {
- if ( n % i == 0) {
- return false;
- }
- }
- return true;
- }
- }
【程序3】
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
- /**
- * @author Geek_Soledad
- * @creation date 2011-4-4 上午10:27:26
- *
- */
- public class DaffodilNum {
- public static void main ( String []args) {
- int unit;
- int decade;
- int hundreds;
- for ( int n = 100; n < 1000; n++ ) {
- unit = n % 10;
- decade = n /10 % 10;
- hundreds = n / 100;
- if ( Math.pow(unit, 3) + Math.pow(decade, 3)
- + Math.pow(hundreds, 3) == n) {
- System.out.print(n + " ");
- }
- }
- }
- }
【程序4】
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
- /**
- * @author Geek_Soledad
- * @creation date 2011-4-4 上午11:10:10
- *
- */
- public class Score {
- public static void main ( String []args) {
- int score;
- if ( args.length < 1) {
- System.out.println("usage: " + new Score().getClass() + " n");
- } else {
- try {
- score = Integer.parseInt(args[0]);
- if ( score >= 90) {
- System.out.println( "A");
- } else if ( score >= 60) {
- System.out.println( "B");
- } else {
- System.out.println( "C");
- }
- } catch( NumberFormatException nfe) {
- System.out.println("The number must be positive integer type");
- }
- }
- }
- }
【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
- /**
- * @author Geek_Soledad
- * @creation date 2011-4-4 下午01:46:47
- *
- */
- public class Test**LCM {
- public static void main ( String []args) {
- int m = 40;
- int n = 60;
- int hcfNum ,lcmNum;
- hcfNum = hcf( m, n);
- if ( hcfNum < 0) {
- System.out.println("请输入两个正整数");
- }
- System.out.println("The HCD is " + hcfNum);
- lcmNum = lcm ( m, n, hcfNum);
- System.out.println("The LCM is " + lcmNum);
- }
- /*本方法采用欧几德里算法。*/
- /* 发了帖才发现最大公约数的另一个缩写不是你想写就能写的,要和谐*/
- static int hcf( int m, int n) {
- int tmp;
- if ( m <= 0 || n <= 0) {
- return -1;
- }
- if ( m < n) {
- tmp = m;
- m = n;
- n = tmp;
- }
- while ( n > 0) {
- tmp = m % n;
- m = n;
- n = tmp;
- }
- return m;
- }
- static int lcm(int m, int n, int hcf) {
- return m * n / hcf;
- }
- }