1.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,输入月数,要求输出兔子数?
思路:先找出兔子数量规律1,1,2,3,5,8,13,21…可得从第三个月开始兔子总数等于前两个月兔子数之和。使用递归(方法调用自己)可以得出那个月的兔子数。
package com.sufa; import java.util.Scanner; public class Text { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt(); System.out.println("第"+m+"月兔子总数为"+tz(m)); } public static int tz(int month){ if(month!=1&&month!=2){ int zs = tz(month-1)+tz(month-2); return zs; } return 1; }
2.题目:判断101-200之间有多少个素数,并输出所有素数。
思路:先利用循环控制101-200之间的所有数,然后设计一个标记,再利用循环控制2-这个数本身的数,再判断第一个循环的数%第二个循环的数是否等于0,如果等于则改变标记,最后判断标记未被改变的数,输出即可。
package com.sufa; public class Text1 { public static void main(String[] args) { //循环101-200之间的数 for (int i = 101; i<=200;i++){ //设定一个标记 int f = 0; //循环2-这个数之间的数 for (int j = 2;j3.题目:打印出所有的"水仙花数(narcissus number)",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
思路:利用循环控制100-999个数,每个数分解出个位,十位,百位。 在进行判断即可。package com.sufa; public class Text2 { public static void main(String[] args) { //循环100-999之间的数 for (int i =100;i<1000;i++){ //分解出个位、十位、百位的数 int g = i%10; int s = i/10%10; int b = i/100; //判断输出即可 if((g*g*g)+(s*s*s)+(b*b*b)==i){ System.out.println(i+"是水仙花数"); } } } }4.题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。
思路:先输入一个整数n,然后利用循环控制2-这个数本身的数,然后进行取模判断,找到最小因数,然后重新给n赋值=n/因数,接着循环,输出即可。import java.util.Scanner; public class Text3 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个正整数"); int n = sc.nextInt(); System.out.print(n+"="); for (int i = 2;i<=n;i++){ while(n!=i) { if (n % i == 0) { //输出这个数+"*" System.out.print(i + "*"); //给n重新赋值 n = n / i; } else { break; } } } //输出最后剩下的无法分解的那个数 System.out.println(n); } }欢迎分享,转载请注明来源:内存溢出
评论列表(0条)