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

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");
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值