1.有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
分析: 一月 1对, 2月 1对,3月 2对,4月 3对,5月5对,6月8对,7月13对,8月 21只 第三月等前两月之和
public class OneRabbit { public static void main(String[] args) { System.out.print("输入数值"); Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); System.out.println(rab( n)); System.out.println(test(n)); } /** * 兔子问题 斐波拉契数列 */ //递归 private static int rab(int n) { if(n==1||n==2) { return 1; }else { return rab(n-1)+rab(n-2); } } // 一般做法 public static int test(int i) { int t=0; int a=0; int b=1; for (int j = 0; j < i; j++) { t=a+b; a=b; b=t; } return a; } }
2.判断101-200之间有多少个素数,并输出所有素数(素数,不能被自己和1整除的数)
public class TwoSuShu { public static void main(String[] args) { System.out.print("请输入:"); Scanner scanner=new Scanner(System.in); int a=scanner.nextInt(); int b=scanner.nextInt(); sunNum(a, b); } /** * 判断一个数是否是素数,就是从2到num-1是否有约数,有 false * @param num * @return */ private static Boolean isNum(int num) { Boolean f=true; for (int i = 2; i < num; i++) { if (num%i==0) { f=false; break; } } return f; } private static void sunNum(int a,int b) { if (a>=b) { System.out.println("错误"); } System.out.println("素数是:"); for (int i = a; i <= b; i++) { if (isNum(i)) { System.out.print(i+" "); } } } }
3.打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
public class ThreeNarc { public static void main(String[] args) { for (int i = 100; i < 999; i++) { if (isNar(i)) { System.out.println("水仙花数:"+i); } } } /** * 判断是否是水仙花数 * @param a * @return */ private static Boolean isNar(int a) { int n1=0; int n2=0; int n3=0; n1=a/100; n2=(a-n1*100)/10; n3=a-n2*10-n1*100; if (Math.pow(n1, 3)+Math.pow(n2, 3)+Math.pow(n3, 3)==a) { return true; } return false; } }
4.将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
public class FourDec { public static void main(String[] args) { System.out.print("请输入:"); Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); decro(n); scanner.close(); } private static void decro(int num) {
int t=num/2 for (int i = 2; i < t; i++) { if (num%i==0) { // System.out.println("前num:"+num); num=num/i; System.out.println(i); // System.out.println("num:"+num); i=1;//i=1,最后一个num/1,数据全部输出 // System.out.println("i=1后"+num); continue; } } } }
5.利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示
6.求m,n 的最大公约数和最小公倍数
public class FiveMax { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入第一个数:"); int num1=scanner.nextInt(); System.out.println("请输入第二个数:"); int num2=scanner.nextInt(); System.out.println("最大公约数:"+maxNum(num1, num2)); System.out.println("最小公倍数:"+(num1*num2)/maxNum(num1, num2)); } private static int maxNum(int num1,int num2) { int result=1; int t=num1>num2?num2:num1; for (int i = 2; i <=t; i++) { if (num1%i==0 && num2%i==0) { result=result*i; num1=num1/i; num2=num2/i; i=1; } } return result; } }
其余转载至: 50道题及答案https://www.cnblogs.com/hgnulb/p/9904714.html