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的最大公约数和最小公倍数,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());*/}}。
输入两个正整数m和n求其最大公约数和最小公倍数
输入两个正整数,m和n,求其最大公约数和最小公倍数。
1. 输入两个正整数,m和n,求其最大公约数和最小公倍数。
2. 输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。
3. 输入一个正整数求出它是几位数;输出原数和位数。
4. 输入一个正整数,输出原数并逆序打印出各位数字。
5. 从键盘上输入若干学生的一门课成绩,统计并输出最高成绩和最低成绩及相应的序号,当输入负数时结束输入。
6. 从键盘上输入若干学生的一门课成绩,计算出平均分,当输入负数时结束输入。
将结果输出。
7. 求1!+2!+3!+……+20!,将结果输出。
8. 打印以下图案: ****************9. 打印以下图案:**********10. 求下列试子的值:1-1/2+1/3-1/4+……+1/99-1/100,将结果输出。
11. 打印出100,999之间的所有水仙花数。
12. 求S(Sn)=a+aa+aaa+…+aa…a之值,n,a由键盘输入。
n13. 打印以下图案:****************************14.打印以下图案:112112321123432115. 打印以下图案:123432112321121116.编写一个统计学生成绩程序,完成以下功能:输入4个学生的2门课成绩;求出全班的总平均分,将结果输出。
17. 打印以下图案:*************************18.给出年、月、日,计算该日是该年的第几天。
19.求一个3*3的整型矩阵对角线元素之和。
将原矩阵和求出的和输出。
20.求一个4*3的矩阵各行元素的平均值;将原矩阵和求出的平均值全部输出。
21.求一个3*4的矩阵各列元素的平均值;将原矩阵和求出的平均值全部输出。
22.求一个3*5的矩阵各列元素的最大值,将原矩阵和求出的最大值全部输出。
23.求一个4*3的矩阵各行元素的最大值,将原矩阵和求出的最大值全部输出。
24.求一个M*N的矩阵中元素的最大值,将原矩阵和求出的最大值全部输出。
输入两个正整数m和n求其最大公约数和最小公倍数
输入两个正整数,m和n,求其最大公约数和最小公倍数。
1. 输入两个正整数,m和n,求其最大公约数和最小公倍数。
2. 输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。
3. 输入一个正整数求出它是几位数;输出原数和位数。
4. 输入一个正整数,输出原数并逆序打印出各位数字。
5. 从键盘上输入若干学生的一门课成绩,统计并输出最高成绩和最低成绩及相应的序号,当输入负数时结束输入。
6. 从键盘上输入若干学生的一门课成绩,计算出平均分,当输入负数时结束输入。
将结果输出。
7. 求1!+2!+3!+……+20!,将结果输出。
8. 打印以下图案: ****************9. 打印以下图案:**********10. 求下列试子的值:1-1/2+1/3-1/4+……+1/99-1/100,将结果输出。
11. 打印出100,999之间的所有水仙花数。
12. 求S(Sn)=a+aa+aaa+…+aa…a之值,n,a由键盘输入。
n13. 打印以下图案:****************************14.打印以下图案:112112321123432115. 打印以下图案:123432112321121116.编写一个统计学生成绩程序,完成以下功能:输入4个学生的2门课成绩;求出全班的总平均分,将结果输出。
17. 打印以下图案:*************************18.给出年、月、日,计算该日是该年的第几天。
19.求一个3*3的整型矩阵对角线元素之和。
将原矩阵和求出的和输出。
20.求一个4*3的矩阵各行元素的平均值;将原矩阵和求出的平均值全部输出。
21.求一个3*4的矩阵各列元素的平均值;将原矩阵和求出的平均值全部输出。
22.求一个3*5的矩阵各列元素的最大值,将原矩阵和求出的最大值全部输出。
23.求一个4*3的矩阵各行元素的最大值,将原矩阵和求出的最大值全部输出。
24.求一个M*N的矩阵中元素的最大值,将原矩阵和求出的最大值全部输出。
java编程练习题及答案
java编程练习题及答案【篇一:java基础编程练习题(50题及答案)2017】class=txt>【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?//这是一个菲波拉契数列问题public class lianxi01 {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);}}}【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
public class lianxi02 {public static void main(string[] args) {int count = 0;for(int i=101; i200; 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);}}【程序3】题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。
JAVA经典算法面试40题及答案
JAVA经典算法⾯试40题及答案现在是3⽉份,也是每年开年企业公司招聘的⾼峰期,同时有许多的朋友也出来找⼯作。
现在的招聘他们有时会给你出⼀套⾯试题或者智⼒测试题,也有的直接让你上机操作,写⼀段程序。
算法的计算不乏出现,基于这个原因我⾃⼰搜集了⼀些算法上的题型。
希望对于⼤家有所帮助。
【程序1】题⽬:古典问题:有⼀对兔⼦,从出⽣后第3个⽉起每个⽉都⽣⼀对兔⼦,⼩兔⼦长到第四个⽉后每个⽉⼜⽣⼀对兔⼦,假如兔⼦都不死,问每个⽉的兔⼦总数为多少?1.程序分析:兔⼦的规律为数列1,1,2,3,5,8,13,21….public class exp2{public static void main(String args[]){int i=0;for(i=1;i<=20;i++)System.out.println(f(i));}public static int f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}}或public class exp2{public static void main(String args[]){int i=0;math mymath = new math();for(i=1;i<=20;i++)System.out.println(mymath.f(i));}}class math{public int f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}}【程序2】题⽬:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的⽅法:⽤⼀个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
public class exp2{public static void main(String args[]){int i=0;math mymath = new math();for(i=2;i<=200;i++)if(mymath.iszhishu(i)==true)System.out.println(i);}}class math{public int f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}public boolean iszhishu(int x){for(int i=2;i<=x/2;i++)if (x % 2==0 )return false;return true;}}【程序3】题⽬:打印出所有的 “⽔仙花数 “,所谓 “⽔仙花数 “是指⼀个三位数,其各位数字⽴⽅和等于该数本⾝。
Java求两个正整数的最大公约数和最小公倍数
Java求 两 个 正 整 数 的 最 大 公 约 数 和 最 小 公 倍 数
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
}
最小公倍数和最大公约数:
import java.util.Scanner; public class CandC {
//下面的方法是求出最大公约数 publ
while (true) {
if ((m = m % n) == 0) return n;
大家可以参考以前发布的文章。
程序分析:利用辗除法。
最大公约数:
public class CommonDivisor{ public static void main(String args[]) { commonDivisor(24,32); } static int commonDivisor(int M, int N) { if(N<0||M<0) { System.out.println("ERROR!"); return -1; } if(N==0) { System.out.println("the biggest common divisor is :"+M); return M; } return commonDivisor(N,M%N); }
if ((n = n % m) == 0) return m;
} } public static void main(String args[]) throws Exception {
最大公约数与最小公倍数的计算
最大公约数与最小公倍数的计算两个整数的最大公约数(Greatest Common Divisor,简称GCD)指的是能够同时整除这两个数的最大正整数。
而最小公倍数(Least Common Multiple,简称LCM)则指的是能够同时被这两个数整除的最小正整数。
在数学和计算中,求解最大公约数和最小公倍数是一项基础且常用的运算。
1. 最大公约数的计算最大公约数可以通过辗转相除法来求解。
该方法基于以下定理:两个正整数a和b(a>b)的最大公约数等于a除以b的余数r和较小数b 之间的最大公约数。
具体求解步骤如下:(1)将a除以b,得到商q和余数r。
(2)若r等于0,则最大公约数为b。
(3)若r不等于0,则用b替换a,用r替换b,然后返回步骤(1)。
以下是一个求解最大公约数的例子:假设要求解45和75的最大公约数。
45 ÷ 75 = 0 (45)75 ÷ 45 = 1 (30)45 ÷ 30 = 1 (15)30 ÷ 15 = 2 0因此,45和75的最大公约数为15。
2. 最小公倍数的计算最小公倍数可以通过两个数的乘积除以它们的最大公约数来求解。
即最小公倍数等于(a*b)/GCD(a,b)。
以下是一个求解最小公倍数的例子:假设要求解6和9的最小公倍数。
首先,计算出它们的最大公约数:6 ÷ 9 = 0 (6)9 ÷ 6 = 1 (3)6 ÷ 3 = 2 0因此,6和9的最大公约数为3。
接下来,计算最小公倍数:LCM(6, 9) = (6 * 9) / GCD(6, 9) = 54 / 3 = 18因此,6和9的最小公倍数为18。
除了使用辗转相除法和相乘相除法,还可以使用质因数分解法求解最大公约数和最小公倍数。
质因数分解法通过将两个数分解为质数的乘积,然后求取它们的公共质数,并将这些公共质数相乘,得到最大公约数或最小公倍数。
综上所述,最大公约数和最小公倍数的计算可以通过辗转相除法、相乘相除法或质因数分解法等多种方法进行。
求两个数的最大公约数和最小公倍数课件
性质多样
最大公约数和最小公倍数还有许多其他有趣的 性质和定理。
最大公约数和最小公倍数的关系
最大公约数和最小公倍数的乘积
两数的最大公约数乘以最小公倍数等于这两个数 的乘积。
最大公约数和最小公倍数的关系
最大公约数是最小公倍数的因子,最小公倍数是最 大公约数的倍数。
结论和要点
• 最大公约数是两个或多个整数的公共因子中最大的一个。 • 最小公倍数是两个或多个整数的公共倍数中最小的一个。 • 可以用欧几里得算法、质因数分解法等方法求最大公约数。 • 可以用公式法、分解法等方法求最小公倍数。 • 最大公约数和最小公倍数有许多应用和有趣的性质。
花坛布置
最大公约数和最小公倍数可以帮 助布置花坛,让花朵的位置更加 均匀美观。
最大公约数和最小公倍数的性质
交换律
最大公约数和最小公倍数满足交换律,在计算 中可以任意改变数字的位置。
结合律
最大公约数和最小公倍数满足结合律,计算时 可以先计算一部分数字的最大公约数或最小公 倍数。
单位元
最大公约数和最小公倍数都有一个单位元,即1, 与任何数的最大公约数和最小公倍数都是1。
求两个数的最大公约数和 最小公倍数ppt课件
最大公约数和最小公倍数是数学中常见的概念。本课件将帮助您了解它们的 定义、计算方法、应用以及性质。
最大公约数和最小公倍数的定义
1 最大公约数
2 最小公倍数
是两个或多个整数的公共因子中最大的一个。
是两个或多个整数的公共倍数中最小的一个。
求最大公约数的方法
别取出各个质因数的最高次幂相乘。
3
公式法
最小公倍数等于两数的乘积除以最大公 约数。
相对质数法
首先计算出两个数的最大公约数,然后 将两个数相乘再除以最大公约数。
最大公约数与最小公倍数的求解
最大公约数与最小公倍数的求解最大公约数和最小公倍数是数学中常见的概念,用于求解整数之间的关系。
在实际应用中,经常需要计算两个或多个数的最大公约数和最小公倍数,这有助于我们解决一些实际问题,如分数化简、比例关系等。
本文将介绍最大公约数和最小公倍数的定义、求解方法以及示例应用。
一、最大公约数的定义和求解方法最大公约数,简称为“最大公约数”,是指两个或多个数最大的公共约数。
求解最大公约数的方法主要有以下几种:1.1 辗转相除法辗转相除法是求解最大公约数最常用的方法之一。
它的基本思想是通过多次用较大数除以较小数,不断得到余数,直到余数为0为止。
此时,较小数即为最大公约数。
例如,我们要求解28和14的最大公约数,按照辗转相除法进行计算:28 ÷ 14 = 2 余 0因此,最大公约数为14。
1.2 穷举法穷举法是一种较为简单直接的方法,适用于求解较小数的最大公约数。
具体操作是列举两个数的所有约数,然后找出它们的最大公约数。
例如,我们要求解15和25的最大公约数,可以列出它们的约数:15的约数为1、3、5、1525的约数为1、5、25最大公约数为5。
二、最小公倍数的定义和求解方法最小公倍数,简称为“最小公倍数”,是指两个或多个数的公共倍数中最小的一个。
求解最小公倍数的方法主要有以下几种:2.1 常用因数法常用因数法是一种常见且简便的方法。
具体步骤是先将两个数分解为质因数的乘积,然后列出所有的质因数并计算每个质因数的最高次数,最后将这些质因数的乘积即为最小公倍数。
例如,我们要求解15和25的最小公倍数,可以先将它们分解为质因数的乘积:15 = 3 × 525 = 5 × 5列出质因数,并计算最高次数:3 × 5 × 5 = 75因此,最小公倍数为75。
2.2 公式法公式法是一种求解最小公倍数的简单方法,适用于只有两个数的情况。
公式法的公式如下:最小公倍数 = 两数的乘积 ÷最大公约数例如,我们要求解16和24的最小公倍数,可以使用公式法:最小公倍数 = 16 × 24 ÷ 8 = 48因此,最小公倍数为48。
求最大公约数和最小公倍数
求最大公约数和最小公倍数最大公约数和最小公倍数是数学中常见的概念,它们在解决整数之间的关系和计算中起到重要作用。
本文将介绍最大公约数和最小公倍数的概念、计算方法以及应用场景等内容。
一、最大公约数最大公约数,又称公因数、最大公因数,是指两个或多个整数共有的约数中最大的一个。
求最大公约数的方法一般有以下几种:1. 因式分解法:将两个数分解为质因数的乘积,然后取共同的质因数,最后再将这些质因数相乘即可得到最大公约数。
2. 辗转相除法:假设有两个正整数a和b,若a能被b整除,则b 即为最大公约数;若不能整除,则将b除以a所得余数,记为r,再用r 去除x,再得余数,如此循环,直到余数为0,则此时的x就是最大公约数。
3. 更相减损法:假设有两个正整数a和b,若a大于b,则a-b的差即为新的a,再将a和b求差,如此循环,直到a和b相等,则此时的结果就是最大公约数。
最大公约数常用于化简分数、判断能否化简、判断两个或多个数字的整除性等问题。
二、最小公倍数最小公倍数是指两个或多个整数公有的倍数中最小的一个。
求最小公倍数的方法一般有以下几种:1. 因式分解法:将两个数分解为质因数的乘积,然后取其所有出现的质因数的最大幂次,再将这些质因数相乘即可得到最小公倍数。
2. 辗转相除法:假设有两个正整数a和b,先求出最大公约数gcd(a,b),然后使用公式:最小公倍数 = (a * b) / 最大公约数。
最小公倍数经常用于解决多个整数的周期性问题,如求多个周期不同时长的运动员再次比赛相遇的时间。
三、最大公约数和最小公倍数的应用1. 分数的化简:求取最大公约数可以帮助我们将分数化简到最简形式,方便计算和比较大小。
2. 常用于约分:对于需要进行约分的分数,可以通过求最大公约数,将分子和分母同时除以最大公约数,得到一个等价的最简分数。
3. 解题方法优化:在解决一些数学问题时,通过求最大公约数和最小公倍数可以有效地简化计算步骤和提高解题效率。
Java经典基础代码
Monkey_peach代码package com.sailor.game;/*** 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩* 下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
* 程序分析:采取逆向思维的方法,从后往前推断。
** @author Sailor**/public class Monkey_Peach {public static void main(String[] args) {int[] peach = new int[10];peach[9] = 1;// 下面利用的是数组和循环将每天的桃子数量都求出来了for (int i = peach.length - 1; i > 0; i--) {peach[i - 1] = 2 * (peach[i] + 1);}for (int i = 0; i < peach.length; i++) {System.out.println(peach[i]);}System.out.println("第一天的桃子数:"+getPeach_Num(10, 1));}// 利用递归的方法来求第一天的桃子数,输入参数为天数和当天的桃子数,输出为第一天桃子数public static int getPeach_Num(int day, int peach_num) {if (day == 1)return peach_num;else if (day < 1 || peach_num < 0)return 0;elsereturn getPeach_Num(day - 1, (peach_num + 1) * 2);}}package com.sailor.game;/*** 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩* 下的桃子吃掉一半,又多吃了一个。
c语言程序设计,输入两个正整数m和n,求其最大公约数和最小公倍数
c语言程序设计,输入两个正整数m和n,求其最大公约数和最小公倍数
C语言程序设计中,有一种常见的需求就是求两个正整数
m和n的最大公约数和最小公倍数。
要解决这一问题,首先就要弄清楚最大公约数和最小公倍数的概念,以及它们之间的关系。
最大公约数是指两个或多个整数共有的最大的正整数,它们可以整除这些整数,而不会有余数。
比如有两个整数m和n,它们的最大公约数就是大于等于它们中任意一个数且小于它们积的最大正整数。
最小公倍数是指两个或多个整数共有的最小的正整数,它们可以被这些整数整除,而不会有余数。
比如有两个整数m
和n,它们的最小公倍数就是小于等于它们积的最小正整数。
当我们知道了最大公约数和最小公倍数的概念之后,就可以用C语言程序来求解了。
具体的算法可以使用辗转相除法,即用大的数除以小的数,如果余数为0,则小的数即为最大公
约数;如果余数不为0,则用小的数除以余数,直到余数为0,所得的最后一个除数为最大公约数。
另外,最小公倍数=两数乘积/最大公约数,可以用C语言程序来实现。
综上所述,要求两个正整数m和n的最大公约数和最小公倍数,可以使用C语言程序来实现,具体的算法即辗转相除法,使用大的数除以小的数,直到余数为0,所得的最后一个除数为最大公约数,而最小公倍数=两数乘积/最大公约数。
Java语言程序设计(郑莉)第三章课后习题答案
Java语言程序设计(郑莉)第三章课后习题答案1.设N为自然数:n!=1*2*3*….*n称为n的阶乘,并且规定0!=1.试编程计算2!,4!,6!he 10!.并将结果输出到屏幕上。
答:public class Mul{public static void main(String args[]){int i,n;float s;for(n=0;n<=10;n=n+2){if(n==0)System.out.println("0!=1\n");else{s=1;for(i=1;i<=n;i++)s=s*i;System.out.println(n+"!="+s+"\n");}}}}2.编写程序,接收用户从键键盘上输入的三个整数x,y,z..从中选出最大和最小者,并编程实现。
答:public class Math{public static void main(String args[]){int[] IntArg = new int[args.length];for(int i=0;i<args.length;i++){IntArg[i] = Integer.parseInt(args[i]);}int max,min;max=IntArg[0]>IntArg[1]?IntArg[0]:IntArg[1];max=max>IntArg[2]?max:IntArg[2];min=IntArg[0]<IntArg[1]?IntArg[0]:IntArg[1];min=min<IntArg[2]?min:IntArg[2];System.out.println("max="+max);System.out.println("min="+min);}}3.求出100一枚的宿舍,并将这些数在屏幕上5个乙杭地显示出来。
输入两个正整数m和n,求最小公倍数,与最大公约数.doc
第一周作业1输入两个正整数m和n, 求其最大公约数和最小公倍数. <1> 用辗转相除法求最大公约数算法描述: m对n求余为a, 若a不等于0 则m <- n, n <- a, 继续求余否则n 为最大公约数<2> 最小公倍数= 两个数的积/ 最大公约数#include int main(){int m, n; int m_cup, n_cup, res; /*被除数, 除数, 余数*/printf("Enter two integer:\n");scanf("%d %d", &m, &n);if (m > 0 && n >0){m_cup = m;n_cup = n;res = m_cup % n_cup;while (res != 0){m_cup = n_cup;n_cup = res;res = m_cup % n_cup;}2、分别用三种循环语句(while语句、do-while语句、for语句),实现求1~100的累加和。
第2周的题目:(要求用数组做)printf("Greatest common divisor: %d\n", n_cup);printf("Lease common multiple : %d\n", m * n / n_cup); }else printf("Error!\n");return 0;}2int sum = 0;int i=0;while(i<100){sum += (i+1);i++;}printf("%d" , sum);i=0;do{sum += (i+1);i++;}while(i <=100)printf("%d" , sum);for(i = 1 ; i <=100 ; i++){sum += i;}printf("%d" , sum);第二周作业1用冒泡法对输入的10个整数排序。
编程题考核题库(50题及答案)
【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?//这是一个菲波拉契数列问题public class lianxi01 {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);}}}#include <iostream>using namespace std;int main(){double x=1,y=1,n;cin>>n;for(int i=1; i<n; ++i){y=x+y;x=y-x;}printf("%.0f\n",x);return 0;}main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){ printf("%12ld %12ld",f1,f2);if(i%2==0) printf("\n");/*控制输出,每行四个*/f1=f1+f2; /*前两个月加起来赋值给第三个月*/f2=f1+f2; /*前两个月加起来赋值给第三个月*/}}【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
最大公倍数和最小公约数的公式
最大公倍数和最小公约数的公式
最大公倍数和最小公约数是数学中常见的概念,它们是用来描述两个或多个数之间的关系。
最大公倍数是指两个或多个数的公共倍数中最大的那个数,而最小公约数是指两个或多个数的公共约数中最小的那个数。
最大公倍数和最小公约数可以用以下公式进行计算:
设a和b为两个正整数,它们的最大公约数为g,最小公倍数为l,则有:
l = a*b/g
g = gcd(a,b)
其中gcd(a,b)表示a和b的最大公约数。
通过这些公式,我们可以很方便地计算出两个或多个数的最大公倍数和最小公约数,从而更好地理解它们之间的关系。
- 1 -。
求两个数的最大公约数和最小公倍数
求两个数的最大公约数和最小公倍数问题分析:要求两个数的最大公约数,首先要找两个数的最小数。
而找两个数的最小数最简单的方法是二元运算符a=a<b?a:b ,经过这个运算符运算后,a的最终取值边为两个数中的最小数。
找到最小的数后,便以这个数为界限(也可以另一个数为界限,以较小数为界限的优点是可以节省时间),用穷举法从1开始找能同时将这两个数整除的数,每找到一个变把它的值保存在同一个变量中,这样那个变量的最终值便是最大公约数。
求最小公倍数是不用重复以上过程,最简单的方法是用这两个数的乘积除以最小公倍数。
源代码:#include<stdio.h>#include<stdlib.h>main(){int i,j,k=1,l1,l2,m,n;printf("\t\t\t求最大公约数和最最小公倍数小程序\n\n");printf("请输入测试数据组数:\n");scanf("%d",&n);while(n--){printf("第%d组测试\n",k++);printf("请输入两个正整数:\n");scanf("%d%d",&i,&j);l1=i<j?i:j;for(m=1;m<=l1;m++)if(i%m==0&&j%m==0)l2=m;printf("最大公约数为%d\n最小公倍数为%d\n",l2,i*j/l2);system("pause");system("CLS");printf("\t\t\t求最大公约数和最最小公倍数小程序\n\n");}}注:黑体字代码为提示或辅助输出的内容,删除后不影响程序运行结果。
程序运行效果图:。
求两个数的最大公约数和最小公倍数
求两个数的最⼤公约数和最⼩公倍数最⼤公约数最⼩公倍数求两个数的最⼤公约数和最⼩公倍数,只要计算出最⼤公约数可以求得最⼩公倍数两个数字a和b,假设最⼤公约数为m,a=a1*m,b=b1*m,最⼩公倍数是a1*b1*m=(a*b)/m算法⼀穷举法按1、2、3...的顺序判断,能同时被两个数整除的最⼤的数是最⼤公约数改进假设a<b,按a、a-1、a-2...的顺序判断,第⼀个能同时被两个数整除的是最⼤公约数int GetGCD(int x, int y){int i;for(i=x;;i--){if(x%i==0&&y%i==0)break;}return i;}算法⼆辗转相除法(欧⼏⾥得算法)第⼀步:令r为a/b所得余数(0≤r<b)若 r= 0,算法结束;b 即为答案。
第⼆步:互换,置 a←b,b←r,并返回第⼀步。
int GetGCD(int m,int n){ if(m == 0||n == 0)return 0; if(m < n)return GetGCD(n, m);if (m % n == 0)return n; elsereturn GetGCD(n,m % n);}算法三更相减损法第⼀步:任意给定两个正整数;判断它们是否都是偶数。
若是,则⽤2约简;若不是则执⾏第⼆步。
第⼆步:以较⼤的数减较⼩的数,接着把所得的差与较⼩的数⽐较,并以⼤数减⼩数。
继续这个操作,直到所得的减数和差相等为⽌。
则第⼀步中约掉的若⼲个2与第⼆步中等数的乘积就是所求的最⼤公约数。
其中所说的“等数”,就是最⼤公约数。
求“等数”的办法是“更相减损”法。
所以更相减损法也叫等值算法。
int GetGCD(int a,int b){while(a!=b){if(a>b)a-=b;elseb-=a;}return a;}以上代码只是提供思路并未进⾏验证。
来源:内部测试。
求两个整数的最大公约数和最小公倍数。要求编写两个函数
1.求两个整数的最大公约数和最小公倍数。
要求编写两个函数,一个函数求最大公约数,
另一个函数根据求出的最大公约数求最小公倍数。
建议使用以下两种数据传递方法分别编程实现:
a)不用全局变量,两个整数在主函数中输入,并以参数形式传送给函数1,求出的最
大公约数返回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小
公倍数,返回到主函数输出最大公约数和最小公倍数。
b)用全局变量的方法。
将两个整数的最大公约数、最小公倍数设为全局变量。
(tips. 若两数为a、b,gcd(a, b)表示最大公约数,lcm(a, b)代表最小公倍数,则有
lcm(a,b)=a∗b/gcd(a,b)
计算gcd(a, b)用辗转相除法。
)
2.编写函数,其功能是在float类型的一维数组中查找最大值、最小值并将它们返回到调
用程序
3.写一个函数,将一个字符串中元音字母复制到另一个字符串,然后输出。