java数学题,java有意思的数学题

不知道为啥人家csdn的字体是白的,白的我看不清,但是咱也不敢问,黏贴过来咱一块看吧。。

c0d1c3a8d573

image.png

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=2335。

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=xy*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)+aadd(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 + "个");

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值