编程题7-12答案

  1. 验证“鬼谷猜想”:对任意自然数,若是奇数,就对它乘以 3 再加 1;若是偶数,就对它除以 2,这样得到一个新数,再按上述计算规则进行计算,一直进行下去,最终必然得到 1 public class HomeWork13 { public static void main(String[] args) { /* * 验证“鬼谷猜想”:对任意自然数,若是奇数, * 就对它乘以3再加1;若是 偶数,就对它除以2, * 这样得到一个新数, * 再按上述计算规则进行计算, * 一直进 行下去,最终必然得到1。 */ int num; Random rd = new Random(); //Integer.MAX_VALUE为最大的整数 num = 1 + rd.nextInt(Integer.MAX_VALUE);//产生数的范围-2[31]----2[31]-1 //System.err.println(rd.nextInt(100));//产生数>=0且<100 System.out.println("原本的数为" + num); while (num != 1) { System.out.println("产生的新数是" + num); if (num % 2 == 0) { //偶数 num = num / 2; } else { num = num * 3 + 1; } } System.out.println(num); } }
  2. 编程求 1~10000 之间的所有“完全数”,完全数是该数的所有因子之和等于该数的数。例如,6 的因子有 1、2、3,且 6=1+2+3,所以 6 是完全数 public class Test { public static boolean isyinzi(int num) { int sum = 0; //判断一个整数是不是一个完全数 for (int d = num - 1; d >= 1; d--) { if (num % d == 0) { sum += d; } } return sum == num; } public static void main(String[] args) { /* * 编程求1~10000之间的所有“完全数”, * 完全数是该数的所有因子之和等 * 于该数的数。例如,6的因子有1、2、3, * 且6=1+2+3,所以6是完全数*/ for (int a = 1; a <= 1000; a++) { int num = a; if (isyinzi(num)) { System.out.println(num); } } }
  3. 猴子吃桃问题。猴子第一天摘下若干个桃子,当时就吃了一半,还不过瘾,就又吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第 10 天在想吃的时候就剩一个桃子了,求第一天共摘下来多少个桃子 public class Test { public static void main(String[] args) { int total = 1; int day = 10; for (int i = 10; i > 0; i--) { System.out.println("第" + day + "天,有桃子" + total + "颗"); total = (total + 1) * 2; day--; } }
  4. 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)。编程求出所有三位的水仙花数 public class Test { public static void main(String[] args) { for (int num = 100; num < 1000; num++) { if (isshuixian(num)) { System.out.println(num); } } } //判断一个数是不是水仙花数 public static boolean isshuixian(int num) { int b = num / 100; int s = num % 100 / 10; int g = num % 10; return Math.pow(b, 3) + Math.pow(s, 3) + Math.pow(g, 3) == num ? true : false; } }
  5. 古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少 public class Test { /* * 古典问题:有一对兔子, * 从出生后第3 个月起每个月都生一对兔子, * 小兔 子长到第三个月后每个月又生一对兔子, * 假如兔子都不死, * 问每个月的兔子总数 为多少? */ public int rubbit(int mon) { if (mon <= 2) { return 1; } else { return rubbit(mon - 1) + rubbit(mon - 2); } } public static void main(String[] args) { int r = 1; int rr = 1; int rrr = 1; System.out.println("方法一:"); for (int a = 1; a <= 12; a++) { //12个月 if (a <= 2) { r = 1; } else { //当前月等于前两个月之和 r = rr + rrr; rrr = rr; rr = r; } System.out.println(r * 2); } System.out.println("方法二,求指定月份的兔子数量:"); HomeWork19 jisuan = new HomeWork19(); System.out.println("请输入月份:"); Scanner sc = new Scanner(System.in); int yue = sc.nextInt(); System.out.println(yue + "月份的兔子数量是" + (jisuan.rubbit(yue)) * 2); } }
  6. 将一个正整数分解质因数。例如:输入 90,打印出 90=2*3*3*5 public class Test { public static void main(String[] args) { System.out.println("请输入一个整数:"); Scanner sc = new Scanner(System.in); int num = sc.nextInt(); System.out.println(num + "的质因数有:"); for (int i = 2; i < num; i++) { while (num % i == 0) { num /= i; System.out.print(i + " "); } } System.out.print(" " + num); } }

原文发布于微信公众号 - java工会(javagonghui)

原文发表时间:2018-04-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

Java基础-day09-重构随机点名器

Java基础-day09-重构随机点名器 1.案例介绍与演示 随机点名的案例由之前简单的Person对象,重构为相对完整的Person对象并使用。 2.案例回顾...

4186
来自专栏一“技”之长

经典排序算法解析 原

    许多高级语言中都提供有排序函数,但是掌握一些经典排序算法的基本原理和编码方法还是很有必要,这个学习过程可以帮助我们更好的理解每种排序算法的设计思路,本篇...

771
来自专栏Golang语言社区

Go语言实现冒泡和快速排序

冒泡和快速排序都属于交换类排序,所谓交换排序是指借助数据元素之间互相交换进行排序的方法。 冒泡排序法 冒泡排序法是一种最简单的交换类排序方法,它是通过相邻数据的...

3236
来自专栏GreenLeaves

字符、字符串和文本的处理之Char类型

1522
来自专栏Java开发者杂谈

算法之数组和问题

算法题之数组和求解 数组和问题 ​ 加上给定一个数组和值x。设计一个算法使得如果数组中存在两个元素的和为x,则输出两个元素的值组成的数组(不区分先后),否则输出...

3768
来自专栏Java帮帮-微信公众号-技术文章全总结

第三天 引用类型选择结构循环结构【悟空教程】

1888
来自专栏糊一笑

排序算法总结与实现

写在前面 一直很惧怕算法,总是感觉特别伤脑子,因此至今为止,几种基本的排序算法一直都不是很清楚,更别说时间复杂度、空间复杂度什么的了。 今天抽空理了一下,其实感...

3339
来自专栏Java帮帮-微信公众号-技术文章全总结

八大排序算法详解_面试+提升

八大排序算法详解_面试+提升 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排...

3839
来自专栏技术博文

PHP实现经典算法

前提:分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中的值按照从小到大的顺序进行排序。 $arr = array(1,43,54,62,21,6...

2674
来自专栏企鹅号快讯

SQL笔记

表达式:表达式的定义非常简单 表达式可以返回一个值 表达式的类型非常广泛 它以包括各种 类型的数据如数字字符以逻辑型等其实在下列子句 如 SELECT 和 FR...

1946

扫码关注云+社区