Java求两个数的最大公约数和最小公倍数
JAVA考试复习题

一、填空题1、Java提供“包”来管理类名空间。
“包”实际上提供了一种_命名机制_和可见性限制机制。
2、使用createScreenCapture() 方法可以复制屏幕的一个矩形区域。
3、Final关键字修饰变量,则该变量_常量_。
Final修饰方法,则该方法_不允许其子类覆盖_。
Final修饰类,则该类_不会再被扩展_。
5、Java程序分两种,_ Java Application _和_Java Applet_。
6、final 关键字表明一个对象或变量在初始化不能修改。
7、在Java语言中,_ RandomAccessFile_文件允许对文件内容的随机读写。
8、一个Java的图形用户界面的最基本组成部分是_组件(Component)_。
9、java的特点:简单、面向对象、平台无关、多线程、安全、动态。
二、判断题1、在Java语言中,常量true、false、null都是使用小写。
y2、Package语句必须放在程序的第一句。
y3、因为Java不支持多继承,所以定义类时implements关键字后面只能说明一个接口名。
N4、我们把客观世界的实体称为问题空间的对象。
N5、一个Java类可以有多个父类。
N6、抽象类必须被继承。
Y7、在Java中声明变量时必须指定一个类型。
Y8、传统的结构化程序设计方法是产生60年代末开始的软件危机的原因。
N9、当通过实现Listener接口完成事件处理时,要同时实现该接口中的所有方法。
10、对多线程的支持是Java的一大特点。
Y三、选择题1、信息资源放在Web服务器后,需要把它的地址告诉大家,这就是b 的功能。
A.WWWB.URLC.BBSD.TCP/IP2、以下关于Applet的生命周期方法的说法哪个是不正确的?(d )A、init()B、start()C、stop()D、main()4、AWT中的Canvas类在使用时必须被(d )。
A.载入B.封装C.继承D.重载5、Java语言中的super关键字是(c )A.指向父类的指针B.父类的标识符C.对父类的引用D.指向父类对象的指针6、下列特点不属于Java语言的选项是(b )。
JAVA算法题

程序习题:A:基础题B:深入题C:综合题A1.取两个数的最小公倍数/最大公倍数并显示。
2.百鸡百脚每只母鸡3元,公鸡4元,小鸡0.5元每只,请问如何100块买100只鸡.苹果0.3元/个,桔子0.2 元/个,芒果0.4元/个,若是用10元去买,有几种组合呢?已知有三个苹果,五个橙子,六个草莓.从中选出8个水果,满足一下条件:1.至少有一个橙子2.橙子数目不小于苹果,不多于草莓3. 判断是否为质数求100以内所有的质数求N以内所有的质数4. 求一个三位数每个位数上的数字.三位数中有些满足:其每个位数的立方的和等于其自身,求出这些数.金额大小写转换。
输入小写的数字金额形式,将其转换成大写的金额形式。
金额的大小写转换,可以先定义两个文本串,一个用于存放大写的数字,比如:壹,贰,参等;一个用存放对应每一个金额数字位的名称,比如:分,角,元,拾,佰等。
转换时,只要找出每一个小写数字的对应大写形式和它的数字位名称即可。
6.找数组中最大/最小的数给歌手打分:在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。
选手最后得分为:去掉一个最高分和一个最低分后,其余8个分数的平均值。
现求出其中一个歌手的最后得分。
7.折半查找:设查找元素储存在一个一维数组中,已经按关键字递增(或递减)的方式排列的情况下,可进行折半查找,其方法是:首先将要查的关键字值与数组中间位置上的记录的关键字比较。
1 若相等,则查找成功;2 若大于中间位置的关键字则说明要查记录只可能在后半段中,下一步应在后半部分再进行折半查找;8.显示所有位数不超过8位的其平方具有对称性质的数(也称回文数)。
例如:11×11=121,121就是回文数。
对于要判断的数,计算出其平方后,将平方的每一位进行分解,再按从低到高的顺序将这些分解出来的数恢复成一个数K(如n=13,则a=169,且k=961),若a等于k则可判定n为回文数。
9.8:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
输入两个正整数m和n,求其最大公约数和最小公倍数

输入两个正整数m和n,求其最大公约数和最小公倍
数
求m和n的最大公约数和最小公倍数:最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。
求两个正整数m和n的最大公约数可用欧几里德算法(辗转相除法)。
求两个正整数m和n的最小公倍数=两个数的乘积÷两个数的最大公约数。
用欧几里德算法(辗转相除法)求两个数的最大公约数的步骤如下:
先用小的一个数除大的一个数,得第一个余数;
再用第一个余数除小的一个数,得第二个余数;
又用第二个余数除第一个余数,得第三个余数;
这样逐次用后一个数去除前一个余数,直到余数是0为止。
那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。
两个正整数的最小公倍数=两个数的乘积÷两个数的最大公约数。
由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。
这就是说,求两个数的最小公倍数,可以先求出两个数的最大公约数,再用这两个数的最大公约数去除这两个数的积,所得的商就是两个数的最小公倍数。
最大公约数和最小公倍数Java源程序

//求长整型数a和长整型数b的最大公约数和最小公倍数,Test类为主类class GreatestCommonDivisor //求长整型数a和长整型数b的最大公约数,同时输出a和b的所有约数{private long a;private long b;private Divisor aDivisor;private Divisor bDivisor;GreatestCommonDivisor(){a = 1;b = 1;aDivisor = new Divisor();bDivisor = new Divisor();}GreatestCommonDivisor(long a,long b){this.a = a;this.b = b;aDivisor = new Divisor(a);bDivisor = new Divisor(b);}public void setA(long a){this.a = a;}public long getA(){return a;}public void setB(long b){this.b = b;}public long getB(){return b;}public void setADivisor(Divisor aDivisor){this.aDivisor = aDivisor;}public Divisor getADivisor(){return aDivisor;}public void setBDivisor(Divisor bDivisor){this.bDivisor = bDivisor;}public Divisor getBDivisor(){return bDivisor;}/** 直接求两个数a和b的最大公约数,用较大数依次除以较小数的所有约数,其中最大的约数即为最大公约数* 即用较小数的所有约数,包括较小数本身,按照从大到小的顺序依次去除较大数* 第一个能把较大数除尽的数就是最大公约数public long getGreatestCommonDivisor(){long result = 1;long n = 0;if(a==0){result = b;}else if(b==0){result = a;}else{long absA = 1;long absB = 1;long littleNumber = 1;long bigNumber = 1;absA = Math.abs(a);absB = Math.abs(b);if(absA<absB){littleNumber = absA;bigNumber = absB;}else{littleNumber = absB;bigNumber = absA;//System.out.println("littleNumber=" + littleNumber);//System.out.println("bigNumber=" + bigNumber);long i = littleNumber;while(i>1){if(bigNumber%i==0){break;}else{do{i--;}while(littleNumber%i!=0);if(bigNumber%i==0){break;}}}if(a<0 && b<0){result = -i;}else if(a>0 && b>0){result = i;}else{result = 1;}}return result;}*/public long getGreatestCommonDivisor(){long result = 1;if(getA()==0){if(getB()!=0){result = getB(); //定义0与另一个非零数a的最大公约数GCD(0,a)=a }elseresult = 1; //定义0与0的最大公约数GCD(0,0)=1}}else if(getB()==0){if(getA()!=0){result = getA(); //定义0与另一个非零数a的最大公约数GCD(0,a)=a }else{result = 1; //定义0与0的最大公约数GCD(0,0)=1}}else //求两个非零数的最大公约数{long commonDivisor[];commonDivisor=aDivisor.getCommonDivisor(bDivisor);for(int i = 1;i<(int)commonDivisor[0];i++){if(result<commonDivisor[i]){result = commonDivisor[i];}}if(getA()<0 && getB()<0){result = -result; //两个负数的最大公约数是负数}else if(getA()>0 && getB()>0) //两个正数的最大公约数已经求出,不做处理{}else{result = 1; //两个异号数的最大公约数是1}}return result;}public void displayGreatestCommonDivisor(){System.out.println(getA() + "和"+ getB() + "的最大公约数是:"+ getGreatestCommonDivisor());}}class Divisor //求长整型a的所有约数{private long a;private long divisor[];private final int MAXIMUMINDEXOFDIVISOR = 10000;Divisor(){a = 1;divisor = new long[MAXIMUMINDEXOFDIVISOR];divisor[0] = 1;divisor[1] = 1;for (int i = 2;i<MAXIMUMINDEXOFDIVISOR;i++){divisor[i] = 1;}}Divisor(long a){if(a>=0){a = a;}else{a = -a;}this.a = a;divisor = new long[MAXIMUMINDEXOFDIVISOR];divisor[0] = 1;divisor[1] = 1;int index = 2;//数字a的约数的顺序号for (long j = 2;j<=getA();j++){if(getA()%j==0){divisor[index] = j;System.out.printf("divisor[index]=%5d\t",divisor[index]);index++;}}index--;divisor[0] = index;System.out.printf("divisor[0]=%5d\n",divisor[0]);for(int j = index + 1;j<MAXIMUMINDEXOFDIVISOR;j++){divisor[j] = 1;}}public void setA(long a){if(a>=0){this.a = a;}else{this.a = -a;}}public long getA(){return a;}public void setDivisor(){divisor[0] = 1;divisor[1] = 1;int index = 1;//属性a的约数的顺序号for(long j = 2;j<=getA();j++){if(getA()%j==0){index++;divisor[index] = j;}}divisor[0] = index;for(int j = index + 1;j<MAXIMUMINDEXOFDIVISOR;j++){divisor[j] = 1;}}public long[] getDivisor(){return divisor;}public long[] getCommonDivisor(Divisor aDivisor) //求本对象的成员变量a和另一个类Divsior型对象中的成员变量a的所有公约数{long []result = new long[MAXIMUMINDEXOFDIVISOR];long otherDivisor[] = aDivisor.getDivisor();int littleIndex = (int)(divisor[0]<otherDivisor[0]?divisor[0]:otherDivisor[0]);int bigIndex = (int)(divisor[0]>otherDivisor[0]?divisor[0]:otherDivisor[0]);//System.out.printf("littleIndex=%5d\tbigIndex=%5d\t",littleIndex,bigIndex);int commonDivisorIndex = 1;result[0] = 1;result[1] =1;for(int i = 2;i<=littleIndex;i++){for(int j = 2;j<=bigIndex;j++){if(divisor[i]==otherDivisor[j]){commonDivisorIndex++;result[commonDivisorIndex] = divisor[i];}}}result[0] = commonDivisorIndex;for(int j = commonDivisorIndex + 1;j<MAXIMUMINDEXOFDIVISOR;j++){result[j] = 1;}return result;}public void displayDivisor(){long aDivisor[];aDivisor = getDivisor();System.out.println(getA() + "有" + aDivisor[0] + "个约数,分别是:");for(int i = 1;i<=aDivisor[0];i++){System.out.printf("\t%10d",aDivisor[i]);}}}class LeastCommonMultiple //求成员变量a和成员变量b的最小公倍数{private long a;private long b;LeastCommonMultiple(){a = 1;b = 1;}LeastCommonMultiple(long a,long b){this.a = a;this.b = b;}public void setA(long a){this.a = a;}public long getA(){return a;}public void setB(long b){this.b = b;}public long getB(){return b;}public long getLeastCommonMultiple(){GreatestCommonDivisor gCD = new GreatestCommonDivisor(a,b);long result = 1;if(a==0 && b==0) //定义0和一个数a的最小公倍数LCM(0,a)=0{result = 0;}else{result = a * b / gCD.getGreatestCommonDivisor();}return result;}public void displayLeastCommonMultiple(){System.out.println(getA() + "和"+ getB() + "的最小公倍数是:"+ getLeastCommonMultiple());}}public class Test{public static void main(String [] args){GreatestCommonDivisor gCD = new GreatestCommonDivisor(40,60);gCD.displayGreatestCommonDivisor();LeastCommonMultiple leastCommonMultiple = new LeastCommonMultiple(gCD.getA(),gCD.getB());leastCommonMultiple.displayLeastCommonMultiple();/*GreatestCommonDivisor greatestCommonDivisor = new GreatestCommonDivisor(40,0);SubGreatestCommonDivisor subGreatestCommonDivisor = new SubGreatestCommonDivisor(greatestCommonDivisor.getA(),greatestCommonDivisor.getB());System.out.println(greatestCommonDivisor.getA() + "和"+ greatestCommonDivisor.getB() + "的最大公约数是:"+ greatestCommonDivisor.getGreatestCommonDivisor());System.out.println(subGreatestCommonDivisor.getA() + "和"+ subGreatestCommonDivisor.getB() + "的最小公倍数是:"+ subGreatestCommonDivisor.getGreatestCommonDivisor());*/}}。
程序员(基础知识、应用技术)合卷软件资格考试(初级)试题与参考答案(2025年)

2025年软件资格考试程序员(基础知识、应用技术)合卷(初级)模拟试题(答案在后面)一、基础知识(客观选择题,75题,每题1分,共75分)1、家长通过编程软件帮助儿童学习编程、科学、艺术等知识。
下列与软件设计相关的说法,错误的是哪一项?( )A. 可以基于孩子的认知特点开发应用程序。
B. 可以通过Web技术搭建平台,提供给多个教学人员使用。
C. 应用程序和平台的使用方式需要简单,以便儿童和家长容易上手。
D. 开发小朋友教育类软件不需要考虑安全性,因为用户是小朋友。
2、某公司开发了一个人脸识别系统的应用程序,该软件依赖于用户的面部特征来验证身份。
下列关于该软件应用说法,不正确的是哪一项?( )A. 需要使用高精度摄像头捕捉清晰的用户面部图像。
B. 应实现算法对图像识别结果的实时处理。
C. 应该通不过加密技术保护用户的面部作出传输和存储保证其隐私。
D. 应用需要定期更新数据库来确保识别的准确性。
3.(单选题)在编程中,数据结构分为多种类型,其中一种是用于存储数据集合,能够表示集合中的关系和层次关系的数据结构。
这种数据结构被称为()A.栈B.链表D.图结构5.在软件开发过程中,以下哪个阶段通常不属于需求分析阶段的工作?A. 需求收集和分析B. 系统设计C. 软件定义D. 可行性研究6.以下哪个符号用于表示类的属性?B. *C. @D. &7、以下哪个关键字用于表示一个函数的返回值类型?A. voidB. intC. floatD. char8、以下哪个关键字用于表示一个函数可以不接受任何参数?A. voidB. intC. floatD. char9、计算机的主要性能指标通常是指内存容量和()。
B、时钟速率C、分辨率D、存储速率 10、在计算机网络中,HTTP是()协议。
A、文件传输B、电子邮件C、超文本传输D、远程登录11、下列哪种数据结构是线性结构?A. 栈B. 树C. 图D. 一个数组12、面向对象程序设计的核心是?A. 函数分解B. 数据抽象C.控制流D. 并发编程13.下列情况下,编译时能发现错误的有?(多选题)A. 变量未初始化B. 忘记写分号C. 函数返回值类型与函数声明不一致D. 使用已释放的内存14.在Java语言中,下列哪一项是不包含在基本数据类型中的?A. 整型C. 字符型D. 布尔型15、计算机网络中,TCP/IP协议分为几层?每层的主要功能是什么?16、什么是数据库的三范式?请简要说明每个范式的内容和作用。
作业4-1:方法

第4章类和对象-1学习目标•能够创建新的方法•介绍使用随机数生成的仿真技术•介绍方法调用的使用•创建重载方法•介绍Java API中常用的Math方法4.1 实验前检查在学完《Java语言程序设计》的第4章后,请回答以下问题。
这些问题旨在检验和巩固你对关键概念的理解。
既可以在实验课程之前,也可以在实验课程期间完成。
4.1.1 选择题:1.下列方法定义中,正确的是( D )。
A) int x( int a,b ) { return (a-b); }B) double x( int a,int b) { int w; w=a-b; }C) double x( a,b ) { return b; }D) int x( int a,int b) { return a-b; }2.下列方法定义中,正确的是( D )。
A) void x( int a,int b ); { return (a-b); }B) x( int a,int b) { return a-b; }C) double x { return b; }D) int x( int a,int b) { return a+b; }3. 下列方法定义中,不正确的是( C )。
A) float x( int a,int b ) { return (a-b); }B) int x( int a,int b) { return a-b; }C) int x( int a,int b ); { return a*b; }D) int x(int a,int b) { return 1.2*(a+b); }4.下列方法定义中,正确的是( A )。
A) int x( ){ char ch='a'; return (int)ch; }B) void x( ){ ...return true; }C) int x( ){ ...return true; }D) int x( int a, b){ return a+b; }5. 列方法定义中,方法头不正确的是( D )。
最大公约数和最小公倍数求法

最大公约数和最小公倍数求法1. 引言大家好呀!今天我们来聊聊数学里两个非常重要的概念——最大公约数和最小公倍数。
这听起来可能有点儿枯燥,但别担心,我们会用轻松幽默的方式来探讨这些概念,让大家在笑声中学到东西。
毕竟,数学不一定是冷冰冰的,我们可以把它变得生动有趣!2. 最大公约数(GCD)2.1 什么是最大公约数?好吧,首先我们得搞明白,最大公约数到底是什么。
简单来说,最大公约数就是能同时整除几个数的最大整数。
比如说,咱们有两个数,12和16,最大公约数就是4,因为4是能同时把12和16整除的最大数。
嘿,这就像找一个能跟你和你朋友都玩得来的地方,既不太大也不太小,刚刚好!2.2 怎么求最大公约数?那么,怎么求最大公约数呢?其实有几种方法,咱们来看看。
最简单的就是列举法,慢慢来找。
先把两个数的所有公因数列出来,比如说12的因数有1、2、3、4、6、12,16的因数有1、2、4、8、16。
你看,1、2、4都是共同的,最大的是4!是不是很简单?不过,若你觉得这样太慢,那就可以用辗转相除法了。
这个听起来很高大上,但其实就是用较大的数去除较小的数,余数再去除,直到余数为0。
最后的除数就是最大公约数,简单吧!3. 最小公倍数(LCM)3.1 什么是最小公倍数?说完最大公约数,咱们再来看看最小公倍数。
这个就更简单了,最小公倍数是能被几个数同时整除的最小正整数。
举个例子,假如有两个数,4和5,最小公倍数就是20,因为20是4和5的第一个公共倍数。
想象一下,这就像是找一个能同时满足你和你朋友的需求的餐厅,菜品丰富,又不会太贵,嘿嘿,真是完美!3.2 怎么求最小公倍数?那么,如何求最小公倍数呢?这里有一个小技巧,就是用最大公约数来帮忙。
具体的公式是:最小公倍数= (a × b) / 最大公约数。
就以刚刚的4和5为例,先求最大公约数,显然是1。
然后用公式算一下,(4 × 5) / 1 = 20,完美!这就是最小公倍数,简单又高效,是不是?4. 实际应用4.1 为什么要知道这些?那么,大家可能会问,学这些有什么用呢?其实,最大公约数和最小公倍数在生活中无处不在,比如在安排活动时,确定时间表,或者在分蛋糕时,大家都想要公平的份额。
最大公约数与最小公倍数的求解

最大公约数与最小公倍数的求解在数学中,最大公约数和最小公倍数是两个常见的概念,用于求解整数之间的关系。
最大公约数是指两个或多个整数中最大的能够同时整除它们的数,最小公倍数则是指能够同时被两个或多个整数整除的最小的数。
求解最大公约数的方法有多种,下面将介绍三种常用的方法:质因数分解法、辗转相除法和欧几里得算法。
一、质因数分解法质因数分解法是一种基于质因数的方法,用于求解最大公约数。
其基本思想是将两个数分别进行质因数分解,然后找出它们的公共质因数,并将这些公共质因数相乘,即可得到最大公约数。
例如,我们需要求解28和42的最大公约数。
首先,分别对28和42进行质因数分解,得到28=2^2*7,42=2*3*7。
接下来,我们找出它们的公共质因数,即2和7,并将它们相乘,得到2*7=14,即28和42的最大公约数为14。
二、辗转相除法辗转相除法,也称为欧几里得算法,用于快速求解两个整数的最大公约数。
其基本思想是通过反复取余数,将原问题转化为一个等价的,但规模更小的问题,直至余数为0。
此时,除数即为原问题的最大公约数。
以求解64和48的最大公约数为例。
首先,我们将64除以48,得到商数1和余数16。
然后,我们将48除以16,得到商数3和余数0。
由于余数为0,所以最大公约数为上一步的除数16。
三、欧几里得算法欧几里得算法是辗转相除法的一种扩展应用,用于求解多个整数的最大公约数。
其基本思想是通过将多个整数的最大公约数转化为两个整数的最大公约数的求解,逐步迭代求解最终的最大公约数。
例如,我们需要求解30、45和75的最大公约数。
首先,我们可以先求解30和45的最大公约数,得到15。
然后,我们将15和75求最大公约数,得到15。
因此,30、45和75的最大公约数为15。
最小公倍数是求解两个或多个数的倍数中最小的数。
求解最小公倍数的方法有两种,分别是公式法和因数分解法。
一、公式法公式法是用于求解两个数的最小公倍数的一种简便方法。