Thinking in Java 第四章练习(吸血鬼数字)

4位吸血鬼数字 4位吸血鬼数字java原码 立即下载

练习一:产生25个int类型的随机数。对于每一个随机值,使用 if-else语句来将其分类为大于、小于或等于紧随它而随机生成的值。

public class RandomInt {

    public static void main(String[] args) {
        Random random =new Random();
        int[] arr=new int[25];
        for(int i=0;i<25;i++){
            arr[i]=random.nextInt(50);
        }
        for(int j=0;j<arr.length-1;j++){
            //25个数比较24次
            if(arr[j]<arr[j+1]){
                System.out.println("数:"+arr[j]+" < "+"数"+arr[j+1]);
            }
            else if(arr[j]>arr[j+1]){
                System.out.println("数:"+arr[j]+" > "+"数"+arr[j+1]);
            }
            else{
                System.out.println("数:"+arr[j]+" = "+"数"+arr[j+1]);
            }
        }
    }
}

练习二:写一个程序,使用两个嵌套的for循环和取余操作符(%)来探测和打印素数(只能被其自身和1整除,而不能被其它数字整除的整数)。

public class PrintPrime {

    public static void main(String[] args) {
        for(int i=1;i<=100;i++){
            boolean Isprime=false;
            for(int j=2;j<i;j++){
                if(i%j==0){
                    Isprime=false;
                    break;//不是素数就要终止
                }
                else{
                    Isprime=true;
                }
            }
            if(Isprime){
                System.out.print(i+" ");
            }
        }
    }
}

练习三:不要用Integer.toBinaryString()方法,而是用三元操作符和按位操作符来显示二进制的1和0。
方法一:创建数组的方法

public class TobinaryString {

    public static void main(String[] args) {
        int num=1999;
        System.out.println(Integer.toBinaryString(num));
        printBinaryString(num);
    }
    public static void printBinaryString(int num){
        int arr[]=new int[32];
        for(int i=0;i<32;i++){
            arr[i]=(num>>i)&1;
        }
        for(int i=31;i>=0;i--){
            System.out.print(arr[i]);
        }
        System.out.println();
    }
}

方法二:不创建数组

    public static void printBinaryString2(int num){
        for(int i=31;i>=0;i--){
            System.out.print((num>>i)&1);
        }

练习三:一个斐波那契数列是由数字1、1、2、3、5、8、13、21、34等等组成的,其中每一个数字(从第三个数字起)都是前两个数字的和。创建一个方法,接收一个整数参数,并显示从第一个元素开始总共由该参数指定的个数所构成 的所有斐波那契数字。例如,如果运行java Fibonacci 5(其中Fibonacci是类名),那么输出就应该是1、1、2、3、5。

public class Fib {
    public static void main(String[] args) {
        int num=5;
        System.out.println(FibNum(num));
        int[] arr=Fibonacci(num);
        System.out.println(Arrays.toString(arr));
    }
    public static int FibNum(int num){
        if(num==1||num==2){
            return 1;
        }
        else{
            return FibNum(num-2)+FibNum(num-1);
        }
    }
    public static int[] Fibonacci(int num){
        int arr[]=new int[num];
        for(int i=0;i<num;i++){
            arr[i]=FibNum(i+1);
        }
        return arr;
    }
}
5
[1, 1, 2, 3, 5]

练习四吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各含乘积的一半位数 的数字,其中从最初的数字中选取的数字可以任意排序。以两个0结尾的数字是不允许的,例如,下列数字都是“吸血鬼”数字:

  • 1260 = 21 * 60
  • 1827 = 21 * 87
  • 2187 = 27 * 81
  • 写一个程序,找出4位数的所有吸血鬼数字。

这道题有这么一个算法,我们将这个四位数看成,1000a+100b+10c+d
这里以1260为例子,此时a=1,b=2,c=6,d=0
1260=2160可以看成1260=(10b+a)(10c+d)
当1260-21-60=999a+90b,可以被9整除
同理也使用于其他的吸血鬼数字,所以我们可以初步筛选,这个吸血鬼数字减去两个乘积的数可以被9整除。
因此就可以写代码了

public class VampireNum {
    //1260 = 21 * 60
    public static void main(String[] args) {
        int[] startnum=new int[4];
        int[] productnum=new int[4];
        int count=0;
        for(int i=10;i<100;i++){
            for(int j=i;j<100;j++){
                int product=i*j; //1260
                if(product%100==0||(product-i-j)%9!=0){
                    continue;
                }
                count++;
                startnum[0]=i/10;//2
                startnum[1]=i%10;//1
                startnum[2]=j/10;//6
                startnum[3]=j%10;//0

                productnum[0]=product/1000;//1
                productnum[1]=product%1000/100;//2
                productnum[2]=product%100/10;//6
                productnum[3]=product%10;//0
                int num=0;
                for(int x=0;x<productnum.length;x++){
                    for(int y=0;y<startnum.length;y++){
                        if(productnum[x]==startnum[y]){
                            num++;
                            productnum[x]=-1;
                            startnum[y]=-2;
                            if(num==4){
                                System.out.println("i="+i+" j="+j+" product="+product);
                            }
                        }
                    }
                }
            }
        }
        System.out.println("count= "+count);
    }
}

输出结果:

i=15 j=93 product=1395
i=21 j=60 product=1260
i=21 j=87 product=1827
i=27 j=81 product=2187
i=30 j=51 product=1530
i=35 j=41 product=1435
i=80 j=86 product=6880
count= 297
JAVA求吸血鬼数字 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。以2个0结尾的数字是不允许的,例如,下列数字都是吸血鬼数字: 1260 = 21*60 1827 =21*87 2187 =27*81 本程序就是如何找出4位数的所有的吸血鬼数字。 立即下载

相关推荐

Thinking in Java 中文第四版+习题答案

写在前面的话 引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 1.5.1 改善基础类 1.5.2 等价和类似关系 1.6 多形对象的互换使用 1.6.1 动态绑定 1.6.2 抽象的基础类和接口 1.7 对象的创建和存在时间 1.7.1 集合与继承器 1.7.2 单根结构 1.7.3 集合库与方便使用集合 1.7.4 清除时的困境:由谁负责清除? 1.8 违例控制:解决错误 1.9 多线程 1.10 永久性 1.11 Java和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失 1.12.2 阶段0:拟出一个计划 1.12.3 阶段1:要制作什么? 1.12.4 阶段2:开始构建? 1.12.5 阶段3:正式创建 1.12.6 阶段4:校订 1.12.7 计划的回报 1.13 Java还是C++? 第2章 一切都是对象 2.1 用句柄操纵对象 2.2 必须创建所有对象 2.2.1 保存在什么地方 2.2.2 特殊情况:主类型 2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 2.8.1 注释文档 2.8.2 具体语法 2.8.3 嵌入 2.8.4 @see:引用其他类 2.8.5 类文档标记 2.8.6 变量文档标记 2.8.7 方法文档标记 2.8.8 文档示例 2.9 编码样式 2.10 总结 2.11 练习 第3章 控制程序流程 3.1 使用Java运算符 3.1.1 优先级 3.1.2 赋值 3.1.3 算术运算符 3.1.4 自动递增和递减 3.1.5 关系运算符 3.1.6 逻辑运算符 3.1.7 按位运算符 3.1.8 移位运算符 3.1.9 三元if-else运算符 3.1.10 逗号运算符 3.1.11 字串运算符 3.1.12 运算符常规操作规则 3.1.13 造型运算符 3.1.14 Java没有“sizeof” 3.1.15 复习计算顺序 3.1.16 运算符总结 3.2 执行控制 3.2.1 真和假 3.2.3 反复 3.2.6 中断和继续 3.2.7 切换 3.3 总结 3.4 练习 第4章 初始化和清除 4.1 由构建器保证初始化 4.2 方法过载 4.2.1 区分过载方法 4.2.2 主类型的过载 4.2.3 返回值过载 4.2.4 默认构建器 4.2.5 this关键字 4.3 清除:收尾和垃圾收集 4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包名 5.1.2 自定义工具库 5.1.3 利用导入改变行为 5.1.4 包的停用 5.2 Java访问指示符 5.2.1 “友好的” 5.2.2 public:接口访问 5.2.3 private:不能接触 5.2.4 protected:“友好的一种” 5.3 接口与实现 5.4 类访问 5.5 总结 5.6 练习 第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.6 递增开发 6.7 上溯造型 6.7.1 何谓“上溯造型”? 6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final类 6.8.4 final的注意事项 6.9 初始化和类装载 6.9.1 继承初始化 6.10 总结 6.11 练习 第7章 多形性 7.1 上溯造型 7.1.1 为什么要上溯造型 7.2 深入理解 7.2.1 方法调用的绑定 7.2.2 产生正确的行为 7.2.3 扩展性 7.3 覆盖与过载 7.4 抽象类和

Java 吸血鬼数字

很惭愧(其实没什么惭愧,水平就这样),搞了半晌才写出来了一个Java 求四位吸血鬼数字的方法

沉默王二 5272

JAVA吸血鬼数字算法

THINK IN JAVA上的课后题,只是寻找4位数的。

java 吸血鬼数字_Thinking in Java

4. 控制执行流程4.1 true and false所有条件语句都利用条件表达式的真假来决定执行路径4.2 if-else结构if(Boolean expression)statementelse if(Boolean expression)statementelsestatement4.3 迭代结构while(Boolean expression)statement规则在循环刚开始时会计算一次...

weixin_34010875的博客 283

Java实现吸血鬼数字

Java实现吸血鬼数字的3种算法,3种算法的效率各自的比较

Matlab 2023b 科研党必备:MOSEK 10.1.25 安装与配置全记录(附License过期解决方案)

本文详细介绍了在Matlab 2023b中安装与配置MOSEK 10.1.25的全过程,特别针对科研用户提供学术许可申请、证书文件部署及环境集成的实用指南。文章还包含常见问题解决方案和性能调优建议,帮助用户高效完成优化计算任务。

weixin_30598225的博客 171

java吸血鬼_4位吸血鬼数字的java实现思路与实例讲解

这个问题来源于java编程思想一书,所谓“吸血鬼数字”就是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数字,其中从偶数位数字中选取的数字可以任意排列。例如:1260=21*60,1827=21*87,2187=27*81……先列出结果:一共7个:1260=21*60,1395=15*93,1435=41*35,1530=51*30,1827=87*21,2187=27...

weixin_29212429的博客 684

Innovus Function ECO实战:5步搞定数字后端设计中的网表修正(含Calibre LVS验证技巧)

本文提供了一份完整的Innovus Function ECO实战指南,详细解析了数字后端设计中网表修正的五步流程。从理解Function ECO概念、准备关键文件,到在Innovus中执行逻辑比对、自动布线及GUI检查,并重点攻克了ECO后Calibre LVS验证的难点与调试技巧,帮助工程师高效、精准地完成流片前的设计微调。

day7的博客 950

吸血鬼数字(java)

String[] ar1,ar2; int sum=0,iv,count=0; //双重循环穷举 for(int i=10;i<100;i++){ for(int j=i+1;j<100;j++){//j=i+1避免重复 iv=i*j; if(iv%100==0||(iv-i-j)%9!=0){//吸血鬼数字不能被100整除,但减去i和j能被9整除 continue;//如果它能被100整除或者不能被9整除,那么他就不是吸血鬼数字.

m0_55997161的博客 263

立创电赛C题:基于STM32的三端口DC-DC变换器设计与MPPT算法实现

本文详细解析了2021年立创电赛C题——基于STM32的三端口DC-DC变换器设计。文章从题目要求出发,系统阐述了采用双DC-DC电路(分别负责MPPT追踪与稳压)的硬件架构,并重点讲解了以STM32为核心、结合PID控制与扰动观察法(MPPT算法)的软件实现方案,为备赛者提供了完整的软硬件设计思路与调试经验。

weixin_42588877的博客 225

IDEA 2023.2最新破解安装教程(含详细配置步骤及常见问题解决)

本文详细介绍了IDEA 2023.2的安装流程及高效开发环境搭建指南,涵盖基础配置、项目结构优化、核心功能使用、插件推荐、性能优化等全方位内容,帮助开发者快速掌握这一强大的Java开发工具。

x2y3z4a5b的博客 1754

java编程——吸血鬼数字(四位)

从《Thinking in Java》(中文第四版)中第4章的练习10看到“吸血鬼数字”,特编程实现,以下为3种算法(针对四位数的)及其对比: 首先解释一下吸血鬼数字:吸血鬼数字是指位数为偶数的数字,可由一对数字相乘而得到,这对数字各包含乘积的一半位数的数字,以两个0结尾的数字是不允许的。  四位数吸血鬼数字示例:1260=21*60,1827=21*87,2187=27*81…… 先列出结果:一共

我要上天 1280

(53页PPT)新型智慧病房整体解决方案(附下载方式)

当前医疗场景存在三大核心矛盾:院内感染风险(如输液异常发现滞后)、信息孤岛现象(11类业务系统数据割裂)、管理效能不足(30%护理时间耗费在机械性工作)。实际案例显示,整体运营效率提升40%,患者满意度提高28个百分点,真正实现了"让技术有温度,让数据会说话"的价值理念。本文将从需求分析、技术架构、应用场景三个维度,深度剖析这份53页解决方案的创新价值与实践路径。床旁智能终端整合12项功能:包括体征自动采集(误差率<1%)、医嘱执行核对(100%条码校验)、智能床垫离床报警(响应时间3秒)等。

AI_data_cloud的博客 716

Thinking in Java:第四章练习10:写一个程序,找出4位数的所有吸血鬼数字

吸血鬼数字:吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。 public class E10_Vampire { public static void main(String[] args) { int[] startDigit = new int[4]; int[] productDigit = new int[4]; for(int num1 = 10; num1 <= 99; num1

DYNskr的博客 306

STM32H750实战:用TIM+DMA驱动ADC/DAC实现音频回环(附CubeMX配置避坑指南)

本文详细介绍了在STM32H750上构建高保真、低延迟音频链路的实战方法。通过配置TIM定时器作为硬件节拍器,精准触发ADC采集与DAC播放,并利用DMA实现数据的自动搬运,全程无需CPU干预。文章重点剖析了CubeMX配置中的关键步骤与常见“坑点”,如ADC的Conversion Data Management模式选择、DMA的FIFO与Burst模式配置,以及STM32H7系列必须开启ADC全局中断等,并提供了完整的代码实现与调试验证指南。

1057

离线环境下 Ubuntu 22.04 制作自定义apt源 安装 Docker环境 的部署方案

本文介绍了一种在无外网环境下部署服务器项目的离线方案。通过在外网环境中制作包含APT软件包和Docker镜像的离线资源包,实现在内网环境中的完整部署。方案详细说明了离线APT源的制作方法、Docker镜像的导出/导入流程,以及内网服务器的软件安装和网络配置步骤。特别强调了版本一致性、目录结构规范和网络适配等注意事项,适用于需要严格隔离网络的生产环境部署。该方案具有可扩展性,可根据实际需求调整软件包和镜像列表。

mmx_2022的博客 654

吸血鬼数字

    吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中最初的数字选取的数字可以任意排序。以两个0结尾的数字是不允许的,如下列数字都是吸血鬼数字:1260=21*601827=21*872187=27*81《Thinking in Java》第四版中第四章练习10里有这样相关的一道练习,找出4位数的所有吸血鬼数字吸血鬼数字,其实有一个性质:如果x...

u011695358的博客 520

PCI Express 权威指南:从协议原理到芯片实现

目录 全文总览第一部分:PCIe体系结构概览第1章 互连技术的演进与PCIe的诞生1.1 从ISA到PCI:并行总线的辉煌与瓶颈1.2 PCI-X的尝试与局限1.3 串行革命:从AGP、PCI到PCIe的范式转移1.4 PCIe的核心优势第2章 PCIe系统全局视角2.1 系统拓扑:Root Complex, Switch, Endpoint的职能与关系2.2 拓扑结构实例:服务器、工作站、嵌入式系统2.3 枚举与配置:系统如何发现和组织PCIe设备2.4 地址空间第3章 PCIe协议分层架构3.1 分层模

qq_42882296的博客 2895

Thinking in Java之吸血鬼数字

  今天学习了Java的流程控制的内容,基本与C语言一样,只不过是Java多了foreach语句的一种用法,相对于C语言来说方便了很多。看了最后一道习题,是关于吸血鬼数字的,比较感兴趣于是就写了代码。但是我这个属于暴力求解,复杂度很高,不知道有没有更简单一点的方法,有待以后改进。   吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中...

lei2014lei的博客 251

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【Java】 Thinking in Java 4.8 练习10 吸血鬼数字

题目: 吸血鬼数字是指位数为偶数的数字,可以有一对数字相乘得到,而这对数字各包含成绩的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。 以两个0结尾的数字是不允许的。写一个程序,找出4位数中所有吸血鬼数字。 方法一: 1 public static void main(String[] args) { 2 outer: for (in...

QQ649233698的博客 191

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

[Thinking in Java]“吸血鬼”数字

《Thinking in Java》P75 练习10:(5)吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位的数字,其中从最初的数字中选取的数字可以任意排序。以两个0结尾的数字是不允许的,例如,下列数字都是“吸血鬼”数字: 1260 = 21 * 60 1827 = 21 * 87 2187 = 27 * 81 写一个程序,找出4位数的所有吸血鬼数字(

haoziiy的博客 453

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

《Thinking in Java》习题——吸血鬼数字

最近在看《Java编程思想》,这本书非常棒,不愧是Java程序员的圣经。看到第四章,后面有道题目很有意思,于是就自己做了做。 1. 我的思路很简单,但是算法效率非常之低。就是把4位数拆成4个数字,比如1260--->1,2,6,0。然后4位数字组合成两个2位数,计算它们 的乘积,相等则就是吸血鬼数字。 1 ...

didingyun4257的博客 195

Thinking in Java Chapter4 Exercise10 吸血鬼数字

吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。 以两个0结尾的数字是不允许的,例如,下列数字都是吸血鬼数字: 1260 = 21 * 60 1827 = 21 * 87 2187 = 27 * 81 程序如下: import java.util.Arrays;...

dh15303249535的博客 129

怎样轻松找出4位数的所有“吸血鬼”数字,多种高效算法详解

关于吸血鬼数字算法问题,我也是读《java编程思想》中遇到的,觉得很有意思。于是,就去做了做。但因为我的粗心,读题的时候忽略了点问题,所以导致我的思路出现了岔口!(当时的思路就是想着把一个4位数拆分成两个2位数,存在数组的形式找出吸血鬼数字,也就是官方答案的那种解法) 虽然我没有解出来,但是我对吸血鬼数字的算法问题做了总结、整理,也搜集了很多解法,并给他们编写了大量的注释,为让你们看的更明白。注...

奈何的人生 2796

thinking in java练习第四章

练习1:写一个程序,打印从1到100的值。 public class test1{ public static void main(String args[]) { for(int i=1;i<=100;i++){ System.out.println(i); } } } 练习2:写一个程序,产生25个int类型的随机数,对于每一个随机数,使用if-else语句来将其分类为大于、小于,或等于紧随它而随机产

qq_41876038的博客 259

Thinking in Java--吸血鬼数字

吸血鬼数字是指位数为偶数的数字,可以用一对数字相乘得到,而这对数字个包含乘积一半位数的数字,其中从最初数字中选取的数字可以任意排序.以两个0结尾的数字是不允许的. 写一个程序求出4位数字中的所有吸血鬼数字.其实就是一个简单的dfs.我们可以将原数字的各位提取出来,然后在去填充新的两个数.如果可以得到两个新数的乘积恰好为原数,则这个数字是吸血鬼数字.下面的代码中IsVampire类提供判断一个数字是

荒野孤鹰 977
上一篇: 最简单的递归(Java实现)
下一篇: Thinking in Java 第五章习题(初始化)
周末的丢
博客等级 码龄7年 197粉丝 331原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值