当前位置: 首页 > 后端技术 > Java

那些年,我们一起做的Java课后习题(41-45)

时间:2023-04-01 19:57:25 Java

本文已同步至:Muramura例题41海边有一串桃子,五只猴子来分。第一只猴子把那堆桃券分成五份,还有一张,这只猴子把多出来的一张扔到海里,拿走了一份。第二只猴子把剩下的桃子分成五等份,还有一个。它也把多余的桃子扔进海里,取了一份。第三、四、五只猴子也照样做了。是的,问沙滩上至少有多少桃子?分析逆向推理,从最后一个猴子到最前面,具体过程看笔记。实现/***使用IntelliJIDEA创建。**@author:cunyu*@version:1.0*@email:747731461@qq.com*@website:https://cunyu1943.github.io*@date:2021/6/714:55*@project:Java编程示例*@package:PACKAGE_NAME*@className:Example41*@description:*/publicclassExample41{publicstaticvoidmain(String[]args){//关于索引,你可以从1得到,但是我们知道数字桃子的个数必须大于5,所以从6开始intindex=6;//继续找,继续找while(true){//对每个索引调用finds()方法判断是否满足条件booleanfinds=finds(index);//如果满足条件,输出结果并终止循环if(finds){System.out.println("沙滩上至少有"+index+"个桃子。");break;}//当6除以5余数为1时,那么step一定是5,因为1~4得到的余数分别是2,3,4,0。当然stepis1andindex+=5;}}/***定义一个判断数字是否满足条件,满足则返回true,否则返回false*所谓条件就是num值必须是每次计算的数之间都大于5,不然怎么分成五份呢**@paramnum*@return*/publicstaticbooleanfinds(intnum){//定义要返回的布尔值booleanflag=false;//有5只猴子,判断5次for(inti=1;i<=5;i++){//判断num是否大于5,如果小于5个桃子才到达第五个monkey,那么第五只猴子会生气,判断这个数是否被除5大于1if(num>5&&num%5==1){//判断是否是最后一只猴子如果有猴子结束并满足条件,返回true,表示已经找到该数。如果(我==5){标志=真;}else{//如果不是最后一只猴子,则猴子减一取五分之一,剩下4/5num原来的桃子数量-1=((num-1)*4)/5;}}else{//如果数小于5不能分,或者不满足最后可以舍弃一个的条件,直接returnfalsereturnfalse;}}返回标志;}}结果示例42题目809X=800X+9*X,其中X代表一个两位数,求出X代表的数。分析遍历两位数,只要满足以上条件,就表示它是X所代表的数字。实现/***使用IntelliJIDEA创建。**@author:cunyu*@version:1.0*@email:747731461@qq.com*@website:https://cunyu1943.github.io*@date:2021/6/715:14*@project:Java编程示例*@package:PACKAGE_NAME*@className:Example42*@description:*/publicclassExample42{publicstaticvoidmain(String[]args){intnum=0;布尔标志=假;for(inti=10;i<100;i++){if(809*i==(800*i+9*i)){if(((8*i)<100)&&((9*i)>99)){标志=真;数=我;休息;}}}System.out.println("匹配的数字:"+num);}}结果例43第0-7题可以组成奇数个。分析0-7组成的数不能从0开始,所以奇数在一位数时有1、3、5、7;有两位数时,奇数为4*7;前面的奇数*8。实现/***使用IntelliJIDEA创建。**@author:cunyu*@version:1.0*@email:747731461@qq.com*@website:https://cunyu1943.github.io*@date:2021/6/715:20*@project:Java编程示例*@package:PACKAGE_NAME*@className:Example43*@description:*/publicclassExample43{publicstaticvoidmain(String[]args){intcount=0;整数总和=0;//0到7有8个数,但是最高位是7,不能把0放在最前面for(inti=1;i<9;i++){if(i==1){count=4;}elseif(i==2){count*=7;}else{计数*=8;}总和+=计数;System.out.println("0-7由"+i+"奇数Number组成:"+sum);}System.out.println("奇数的总数:"+sum);}}ResultsExample44Title一个偶数总是可以表示为两个质数之和。输入一个数分析后,先判断是否为偶数,再判断能否分解为两个素数,即循环判断2~(num/2+1)以及num减去素数是否仍然是素数。实现importjava.util.Scanner;/***使用IntelliJIDEA创建。**@author:cunyu*@version:1.0*@email:747731461@qq.com*@website:https://cunyu1943.github.io*@date:2021/6/715:28*@project:Java编程示例*@package:PACKAGE_NAME*@className:Example44*@description:*/publicclassExample44{publicstaticvoidmain(String[]args){System.out.println("Enteranevennumber");扫描仪扫描=新扫描仪(System.in);intnum=scan.nextInt();if(num%2!=0){System.out.println("输入的不是偶数");返回;}if(num==4){System.out.println("4=2+2");返回;}函数(数);}/***判断一个偶数是否可以分解为两个质数**@paramnum*/publicstaticvoidfunction(intnum){for(inti=2;i