1.题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(数字关系不清楚请自查斐波那契数列) //费波纳列数列,前两位是1,之后没位数是前两位数的和 private static void fibonacci(int n) { int temp1=1,temp2=1,temp; System.out.print(temp1+","+temp2); for (int i = 1; i <=n ; i++) { temp=temp1+temp2; System.out.print(","+temp); temp1=temp2; temp2=temp; } System.out.println(); } //费波纳捏递归 public static int fibonacci1(int month){ if (month<0) return -1; if(month<3&&month>=0) return 1; return fibonacci1(month-1)+ fibonacci1(month-2); } 2.题目:判断101-200之间有多少个素数,并输出所有素数。 private static void find1() { outer: for (int i = 100; i <= 200; i++) { for (int j = 2; j < i; j++) { if (i % j == 0) continue outer; } System.out.print(i + "\t"); } System.out.println(); } private static void find2() { Boolean flag = false; for (int i = 100; i <= 200; i++) { for (int j = 2; j < i; j++) { if (i % j == 0) { flag = false;//判为非质数 break; } //如果j循环到i都没有break,那么这个i是一个质数 flag = true; } if (flag) System.out.print(i + "\t"); } } //判断是否是质数 private static boolean isPrimer(int n) { for (int i = 2; i < n; i++) { if (n % i == 0) return false; } return true; } 3.题目:打印出所有的"水仙花数(narcissus number)",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 public static void narcissus() { int number = 0; for (int a = 1; a < 10; a++) { for (int b = 0; b < 10; b++) { for (int c = 0; c < 10; c++) { if ((number = (a * 100 + b * 10 + c)) == (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3))) { System.out.println(number); } } } } } 4.题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 private static void showPrimerFactor(int n) { System.out.print(n + "="); int count = 0; for (int i = 1; i <= n; i++) { if (n % i == 0) { count++; System.out.print(((count == 1) ? "" : "*") + i); n = n / i; i=1; continue; } } System.out.println(); } 5.题目:打印出杨辉三角形(要求打印出10行如下图) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 private static void showYangHui(int n) { int[][] yang = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { yang[i][j] = (j == 0 || j == i) ? 1 : yang[i - 1][j - 1] + yang[i - 1][j]; } } for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { System.out.print(yang[i][j] + " "); } System.out.println(); } } 6.题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 private static void showGCD(int x, int y) { int maxGY = 1; int minGB ; for (int i = 1; i < ((x > y) ? x : y); i++) { if (x % i == 0 && y % i == 0) { maxGY *= i; x/=i;y/=i; i=1; } } minGB=x*y*maxGY; System.out.println(maxGY+","+minGB); } 7.题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? public void findNumber(int n) { for (int i = 0; i < n; i++) { if (isSquare(i+100)&&isSquare(i+168)) System.out.println(i); } } private boolean isSquare(int n){ int temp=(int)Math.pow(n, 0.5); return temp * temp == n; } 8.题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 private static void showNumbers(String info) { int countA = 0, countS = 0, countD = 0, countO = 0; int length = info.length(); String temp; for (int i = 0; i < length; i++) { temp = info.charAt(i) + ""; if (temp.matches("[a-zA-Z]")) { countA++; } else if (temp.matches("\\s")) { countS++; } else if (temp.matches("\\d")) { countD++; } else countO++; } System.out.println("字母" + countA + "空格" + countS + "数字" + countD + "其他" + countO); } 9.题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int a=2; System.out.println(add(a,n)); } private static int add(int a,int n) { if (n==1) return a; return a*(int)Math.pow(10, n-1)+a*add(a, n-1); } 10.题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的四位数?都是多少? public class demo { public static void main(String[] args) { int a = 1, b = 2, c = 3, d = 4, count = 0; for (int i = a; i <= d; i++) { for (int j = a; j <= d; j++) { for (int k = a; k <= d; k++) { if (i == j || j == k || i == k) continue; System.out.println(i * 100 + j * 10 + k); count++; } } } System.out.println("共有:" + count + "个"); } }
Java 基础10道数学题的解法
最新推荐文章于 2025-02-18 14:36:43 发布