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");
}
}
上一篇: 每日一题01、02