欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java基础算法练习五题——(1)

程序员文章站 2024-03-22 19:00:52
...

1.有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一

对兔子,假如兔子都不死,问每个月的兔子总数为多少?

package com.myd.ex;

import java.util.*;

public class Fibb {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int x = sc.nextInt(); // x是月份
		int i = 0;
		long[] arr = new long[x + 1];
		arr[0] = 1;
		arr[1] = 1;
		for (i = 2; i < x; i++) {
			arr[i] = arr[i - 1] + arr[i - 2];
		}
		System.out.println("在" + x + "月以后的兔子总数为" + arr[x - 1] * 2);
	}

}
2.判断101-200之间有多少个素数,并输出所有素数。 

package com.myd.ex;

import java.util.*;

public class PrimeNum {

	public static void main(String[] args) {
		int sum=0,m=0,n=0;
		for(int i=101;i<=200;i++) {
			for(int j=1;j<=i;j++) {
				m=i%j;		//m为余数,若余为0则证明i可以被j整除
				if(m==0) {
					n++;		//n为因数计数器
				}
			}
			if(n==2) {		//若因数为2则该数为素数
				sum++;
			}
			m=n=0;
		}
		System.out.println(sum);
	}

}
3.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。

用了两种写法。第一种:

package com.myd.ex;

import java.util.*;

public class SxhNum {

	public static void main(String[] args) {
		for(int i=100;i<1000;i++) {
			int a=i/100;
			int b=(i-a*100)/10;
			int c=i-100*a-10*b;
			if(a*a*a+b*b*b+c*c*c==i) {
				System.out.println(i);
			}
		}
	}
}

第二种:

package com.myd.ex;

public class SxhNum2 {

	public static void main(String[] args) {
		for(int a=1;a<=9;a++) {
			for(int b=0;b<=9;b++) {
				for(int c=0;c<=9;c++) {
					if(a*a*a+b*b*b+c*c*c==a*100+b*10+c) {
						System.out.println(a*100+b*10+c);
					}
				}
			}
		}

	}

}

4.
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

package com.myd.ex;

import java.util.*;

public class SplitNum2 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int x = sc.nextInt();
		System.out.print(x + "=");
		if (x == 1) {
			System.out.println("1");
		} else if (x == 4) {
			System.out.println("2*2");
		} else
			splitNum(x);
	}

	public static void splitNum(int x) {
		int t = 2, i = 0;
		int result[] = new int[x];
		for (t = 2; t <= x; t++) {
			if (x % t == 0) {
				result[i] = t;
				i++;
				x = x / t;
				t = 2;
			}
		}
		for (i = 1; i < result.length; i++) {
			if (result[i - 1] != 0) {
				System.out.print(result[i - 1]);
				if (result[i] != 0) {
					System.out.print("*");
				}
			}
		}
	}
}
5.利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下
的用C表示。 

package com.myd.ex;
import java.util.*;
public class ScoreLevel {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int x=sc.nextInt();
		if(x<0) {
			System.out.println("输入错误!");
		}else if(x>=90) {
			System.out.println("A");
		}else if(x>=60) {
			System.out.println("B");
		}else System.out.println("C");
	}

}