兔子问题

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

public static void main(String[] args) {//这是一个菲波拉契数列问题 System.out.println("第1个月的兔子对数: 1"); System.out.println("第2个月的兔子对数: 1"); int f1 = 1, f2 = 1, f, M = 24; for (int i = 3; i <= M; i++) { f = f2; f2 = f1 + f2; f1 = f; System.out.println("第" + i + "个月的兔子对数: " + f2); } }

素数问题

判断101-200之间有多少个素数,并输出所有素数。

程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。

public static void main(String[] args) { int count = 0; for (int i = 101; i < 200; i += 2) { boolean b = false; for (int j = 2; j <= Math.sqrt(i); j++) { if (i % j == 0) { b = false; break; } else { b = true; } } if (b == true) { count++; System.out.println(i); } } System.out.println("素数个数是: " + count); }

水仙花数

打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。

public static void main(String[] args) { int b1, b2, b3; for (int m = 101; m < 1000; m++) { b3 = m / 100; b2 = m % 100 / 10; b1 = m % 10; if ((b3 * b3 * b3 + b2 * b2 * b2 + b1 * b1 * b1) == m) { System.out.println(m + "是一个水仙花数"); } } }

分解质因数

将一个正整数分解质因数。例如:输入90,打印出90=233*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("请键入一个正整数: "); int n = s.nextInt(); int k = 2; System.out.print(n + "="); while (k <= n) { if (k == n) { System.out.println(n); break; } else if (n % k == 0) { System.out.print(k + "*"); n = n / k; } else k++; } }

公约数,公倍数

输入两个正整数m和n,求其最大公约数和最小公倍数。

分析:在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。

public static void main(String[] args) { int a, b, m; Scanner s = new Scanner(System.in); System.out.print("键入一个整数: "); a = s.nextInt(); System.out.print("再键入一个整数: "); b = s.nextInt(); deff cd = new deff(); m = cd.deff(a, b); int n = a * b / m; System.out.println("最大公约数: " + m); System.out.println("最小公倍数: " + n); } } class deff { public int deff(int x, int y) { int t; if (x < y) { t = x; x = y; y = t; } while (y != 0) { if (x == y) return x; else { int k = x % y; x = y; y = k; } } return x; }

完数

一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。

public static void main(String[] args) { System.out.println("1到1000的完数有: "); for (int i = 1; i < 1000; i++) { int t = 0; for (int j = 1; j <= i / 2; j++) { if (i % j == 0) { t = t + j; } } if (t == i) System.out.print(i + " "); } }

排列组合

有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

public static void main(String[] args) { int count = 0; for (int x = 1; x < 5; x++) { for (int y = 1; y < 5; y++) { for (int z = 1; z < 5; z++) { if (x != y && y != z && x != z) { count++; System.out.println(x * 100 + y * 10 + z); } } } } System.out.println("共有" + count + "个三位数"); }

判断天数

输入某年某月某日,判断这一天是这一年的第几天?

public static void main(String[] args) { int year, month, day; int days = 0; int d = 0; Scanner scan=new Scanner(System.in); System.out.print("输入年:"); year = scan.nextInt(); System.out.print("输入月:"); month = scan.nextInt(); System.out.print("输入天:"); day = scan.nextInt(); for (int i = 1; i < month; i++) { switch (i) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 4: case 6: case 9: case 11: days = 30; break; case 2: if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) { days = 29; } else { days = 28; } break; } d += days; } System.out.println(year + "-" + month + "-" + day + "是这年的第" + (d + day) + "天。"); }

乘法表

输出9*9乘法表。

public static void main(String[] args) { for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + "*" + i + "=" + j * i + " "); if (j * i < 10) { System.out.print(" "); } } } System.out.println(); }

猴子吃桃问题

猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

public static void main(String[] args) { int x = 1; for (int i = 2; i <= 10; i++) { x = (x + 1) * 2; } System.out.println("猴子第一天摘了 " + x + " 个桃子"); }

有序数列前n项和

一有序数列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 public static void main(String[] args) { int x = 2, y = 1, t; double sum = 0; for (int i = 1; i <= 20; i++) { sum = sum + (double) x / y; t = y; y = x; x = y + t; } System.out.println("前20项相加之和是: " + sum); }

前n项阶乘和

求1+2!+3!+…+20!的和

public static void main(String[] args) { long sum = 0; long fac = 1; for (int i = 1; i <= 20; i++) { fac = fac * i; sum += fac; } System.out.println(sum); }

回文数

一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

public static void main(String[] args) { Scanner scan = new Scanner(System.in); boolean is = true; System.out.print("请输入一个正整数:"); long number = scan.nextLong();//得到一个长整型 String string = Long.toString(a);//把整形转换为字符串 char[] ch = string.toCharArray();//将字符串转换成字符数组,便于对每一个字符进行单独操作 int j = ch.length;//得到字符数组长度 for (int i = 0; i < j / 2; i++) { if (ch[i] != ch[j - i - 1]) { is = false; } } if (is == true) { System.out.println("这是一个回文数"); } else { System.out.println("这不是一个回文数"); } }

本文地址:https://blog.csdn.net/m0_49926319/article/details/108848140

希望与广大网友互动??

点此进行留言吧!

java数据结构编程_Java数据结构编程相关推荐

  1. java数据结构教程_Java数据结构

    Java实用程序包提供的数据结构非常强大,可以执行各种功能. 这些数据结构由以下接口和类组成 - Enumeration BitSet Vector Stack Dictionary Hashtabl ...

  2. java并发排它锁_Java并发编程进阶——锁(解析)

    一.锁是什么 java开发中进行并发编程时针对操作同一块区域时,如果不加锁会出现并发问题,数据不是自己预计得到的值.我觉得有点像mysql事务中脏读.不可重复读.幻读的问题.加锁的目的是为了保证同一时 ...

  3. java 函数式编程_Java函数式编程:Javaslang入门

    java 函数式编程 Java是一门古老的语言,并且该领域中有很多新手在他们自己的领域(JVM)上挑战Java. 但是Java 8到来并带来了一些有趣的功能. 这些有趣的功能使编写新的惊人框架(例如S ...

  4. java拉兹猜想的编程_Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture

    /** * 考拉兹猜想:Collatz Conjecture * 又称为3n+1猜想.冰雹猜想.角谷猜想.哈塞猜想.乌拉姆猜想或叙拉古猜想, * 是指对于每一个正整数,如果它是奇数,则对它乘3再加1, ...

  5. java 并发统计_java并发编程|CountDownLatch计数器

    0x01,CountDownLatch介绍 CountDownLatch是一个计数器,作为java并发编程中三个组件之一,这个组件的使用频率还是很多的.这里分享下自己画的java并发编程组件的图,后面 ...

  6. java 并发队列_JAVA并发编程:阻塞队列BlockingQueue之SynchronousQueue

    前面在讲解Executors工厂创建可缓存线程的线程池(newCachedThreadPool)的时候有提到过SynchronousQueue队列,该线程池使用 SynchronousQueue 作为 ...

  7. java数据结构 队列_Java数据结构与算法[原创]——队列

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本文介绍数据结构中的队列(queue)的概念.存储结构.队列的特点,文末给出ja ...

  8. java投票锁_Java并发编程锁之独占公平锁与非公平锁比较

    Java并发编程锁之独占公平锁与非公平锁比较 公平锁和非公平锁理解: 在上一篇文章中,我们知道了非公平锁.其实Java中还存在着公平锁呢.公平二字怎么理解呢?和我们现实理解是一样的.大家去排队本着先来 ...

  9. Java 高并发_JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过!...

    JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过! 1.JPG (37.82 KB, 下载次数: 0) 2018-12-3 09:40 上传 2.JPG (28 ...

最新文章

  1. python有多态特性吗_Python:多态、协议和鸭子类型
  2. 微软或允许 Android 应用运行于 Windows 和 WP
  3. Snackbar-Android M新控件
  4. idea maven打包_20201116(Maven学习)
  5. scss2css vscode设置_VSCode下让CSS文件完美支持SCSS或SASS语法方法
  6. JS三大经典变量命名法
  7. 老马的原创空间搬家通告
  8. 16位华人获“诺奖风向标”斯隆奖,4人来自北大数院
  9. dql聚合函数_sql聚合函数有哪些
  10. Linux强制修改root用户密码
  11. 计算机考研838难吗,838初试经验教训分享
  12. 别把爱变成伤害,不要在朋友圈里乱晒娃,朋友圈晒娃注意四点
  13. 网络电视测试软件,2018三款智能电视屏幕检测软件,当贝市场良心推荐
  14. mate30鸿蒙版,Mate30 5G版升级鸿蒙,初步谈论个人使用感受,以及还需待优化小bug
  15. 敏捷测试--测试用例管理平台
  16. 接插件封装尺寸blue
  17. 感应电机矢量控制时间分析 DSP28335
  18. Java虚拟机组成部分及作用
  19. Unity3D——仿吃鸡笔记(1)
  20. 【leetcode】旋转字符串 c++ python

热门文章

  1. 【摘录】UNITY优化-有关骨骼数量的上限问题
  2. 牛客寒假5-D.炫酷路途
  3. Hive 2.3.2 Installation Guide
  4. 数据库事务的隔离级别简单总结
  5. YC元老、硅谷天使投资第一人解读YC成功的秘密
  6. 空净厂商为何对“9颗星”认证趋之若鹜?
  7. Win10光驱不见了
  8. 利用python自带的包可以建立简单的web服务器
  9. 使用Docker构建Jekyll站点
  10. 出现了奇数次的数字的算法