考研算法

最近看了看一些考研小算法题目,虽简单,但是还是想总结一下和大家分享!这些程序都是在Eclipse上面运行通过的,即使这样,我也不能保证百分之百完全正确!万一是瞎猫碰到死耗子了呢?哈哈!如果大家阅读过程中发现哪里有问题或者错误的话还请勇敢指出!以便我修改,谢谢各位!

1 【程序 1 不死神兔】 题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月 又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析: 兔子的规律为数列 1,1,2,3,5,8,13,21....很典型,斐波那契数列问题。相信刚学语言的时候大家已经练过手,再次我话不多说,直接放代码加上注释。

package rzf.com;

import java.util.Scanner;

public class Fibonacci {
	// 定义数组方法
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		System.out.println("请输入一个大于二的数:");
		int n=in.nextInt();
		int arr[] = new int[n];
		arr[0] = arr[1] = 1;
		for (int i = 2; i < arr.length; i++) {
			arr[i] = arr[i - 1] + arr[i - 2];
		}
		System.out.println("斐波那契数列的前20项如下所示:");
		for (int i = 0; i < arr.length; i++) {
			if (i % 5 == 0)
				System.out.println();
			System.out.print(arr[i] + "\t");
		}
	}
 
}

2 【程序 2 输出素数】 题目:判断 101-200 之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除,则表明此数不是素数, 反之是素数。

package rzf.com;

public class Prime{
//本题判断101-200之间的素数
	public static void main(String[] args) {
		
		for(int i=101;i<=200;i++)
		{
			boolean flag=false;
			for(int j=2;j

3 【程序 3 水仙花数】 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例 如:153 是一个"水仙花数",因为 153=1 的三次方+5 的三次方+3 的三次方。 程序分析:利用 for 循环控制 100-999 个数,每个数分解出个位,十位,百位。

package rzf;

public class Narcissistic {

	public static void main(String[] args) {
		int a=0,b=0,c=0;
		for(int i=100;i<999;i++)
		{
			a=i%10;//个位数
			b=i/100;//百位数
			c=(i/10)%10;//	十位数
			if(i==(Math.pow(a, 3)+Math.pow(c, 3)+Math.pow(b, 3)))
				System.out.println(i+" ");
		}
	}

}

4 【程序 4 分解质因数】 题目:将一个正整数分解质因数。例如:输入 90,打印出 90=2*3*3*5。 程序分析:对 n 进行分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成:

(1)如果这个质数恰等于 n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果 n>k,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k 的商,作为新的正整数 n,重复执行第一 步。

(3)如果 n 不能被 k 整除,则用 k+1 作为 k 的值,重复执行第一步。

package rzf;

import java.util.Scanner;

public class Anumber{

	public static void main(String[] args) {
		int n;
		Scanner in=new Scanner(System.in);
		System.out.println("请输入您要分解的数:");
		n=in.nextInt();
		int k=2;//找一个最小的质因数128
		System.out.print(n+"=");
		while(k<=n)
		{
			if(n==k){
				System.out.println(n);
				break;
			}
			else if(n%k==0){
					 System.out.print(k+"*");
					n=n/k;
				}
					else
						k++;
		}
	}

}

5 【程序 5 判断分数等级】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90 分的同学用 A 表示,60-89 分之间的用 B 表示, 60 分以下的用 C 表示。 程序分析:(a>b)?a:b 这是条件运算符的基本例子。

package rzf;

import java.util.Scanner;

public class judgeGold{

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		System.out.println("请输入您的分数:");
		double gold=in.nextDouble();
		System.out.println(gold>=90?"A":gold>=60?"B":"C");
	}

}

最后和大家分享一个用递归调用的方法来分解质因数的程序,不是我想的,但是我感觉博主很聪明,方法很好就分享一下!谢谢各位!今天就分享这么多了,以后会不断更新考研算法题目。

质因数的函数递归调用求解:https://blog.csdn.net/tingzhiyi/article/details/52059353

你可能感兴趣的:(Java学习,考研算法题目)