当前位置:首页 » 编程语言 » 求约数java

求约数java

发布时间: 2022-06-23 21:31:48

Ⅰ 用java语言求m,n的最大公约数,三种方法

1.从1开始循环。分别求出m、n的约数。找出最大公约数。
2.判断m、n的大小,从较小的开始循环,每次减一,判断是否为公约数。如果是,则为最大公约数,break;
3.2反过来,从小到大循环,找最大的。
公约数判断:
m%i=0&&n/i=0。
举第二个例子:
public
class
Test
{
public
static
int
getN(int
m,int
n){
int
i
=
m>n?n:m;
for(;i>0;i--){
if(m%i==0&&n%i==0){
System.out.println("m、n的最大公约数为"+i);
break;
}
}
return
i;
}
public
static
void
main(String[]
args)
{
System.out.println(getN(100,
88));
}
}

Ⅱ java编写求最大公约数和最小公倍数的程序

输入两个正整数m和n, 求其最大公约数和最小公倍数.

用辗转相除法求最大公约数
算法描述:
m对n求余为a, 若a不等于0
则 m <- n, n <- a, 继续求余
否则 n 为最大公约数
最小公倍数 = 两个数的积 / 最大公约数

#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;
}
printf("Greatest common divisor: %d\n", n_cup);
printf("Lease common multiple : %d\n", m * n / n_cup);
}
else printf("Error!\n");
return 0;
}

★ 关于辗转相除法, 搜了一下, 在我国古代的《九章算术》中就有记载,现摘录如下:

约分术曰:“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。”

其中所说的“等数”,就是最大公约数。求“等数”的办法是“更相减损”法,实际上就是辗转相除法。

辗转相除法求最大公约数,是一种比较好的方法,比较快。

对于52317和75569两个数,你能迅速地求出它们的最大公约数吗?一般来说你会找一找公共的使因子,这题可麻烦了,不好找,质因子大。

现在教你用辗转相除法来求最大公约数。

先用较大的75569除以52317,得商1,余数23252,再以52317除以23252,得商2,余数是5813,再用23252做被除数,5813做除数,正好除尽得商数4。这样5813就是75569和52317的最大公约数。你要是用分解使因数的办法,肯定找不到。

那么,这辗转相除法为什么能得到最大公约数呢?下面我就给大伙谈谈。

比如说有要求a、b两个整数的最大公约数,a>b,那么我们先用a除以b,得到商8,余数r1:a÷b=q1…r1我们当然也可以把上面这个式子改写成乘法式:a=bq1+r1------l)

如果r1=0,那么b就是a、b的最大公约数3。要是r1≠0,就继续除,用b除以r1,我们也可以有和上面一样的式子:

b=r1q2+r2-------2)

如果余数r2=0,那么r1就是所求的最大公约数3。为什么呢?因为如果2)式变成了b=r1q2,那么b1r1的公约数就一定是a1b的公约数。这是因为一个数能同时除尽b和r1,那么由l)式,就一定能整除a,从而也是a1b的公约数。

反过来,如果一个数d,能同时整除a1b,那么由1)式,也一定能整除r1,从而也有d是b1r1的公约数。

这样,a和b的公约数与b和r1的公约数完全一样,那么这两对的最大公约数也一定相同。那b1r1的最大公约数,在r1=0时,不就是r1吗?所以a和b的最大公约数也是r1了。

有人会说,那r2不等于0怎么办?那当然是继续往下做,用r1除以r2,……直到余数为零为止。

在这种方法里,先做除数的,后一步就成了被除数,这就是辗转相除法名字的来历吧。

Ⅲ 用JAVA找出两个整数的最大公约数急求

主要思想是:
1,为第一个数找约数,从本身开始,然后减1,注意是循环;就是求商且余数为0的,记为变量X1,以此类推;
2,为第二个数找约数,从本身开始,然后减1,注意是循环;就是求商且余数为0的,记为变量Y1,以此类推;
3,当求出2数本身的第一个约数开始,对X1、Y1开始比较,若X1!=Y1,则继续循环,但是还要判断X1、与Y1的大小,若X1>Y1,则X2与Y1再比较等等
如此循环,就不需要算出所有的约数了
具体的实现还是你慢慢来,我在公司,没有时间和条件编写。

1楼的程序就可以,但是具体的实现似乎花费的资源要大一些!

Ⅳ 用java求555555的约数中最大的三位数 小白一个求详细过程 一定要用java

public class test{
public static void main(String args[]){
int count = 0;
for(int i =555555 ;i>0;i--){
if(555555%i==0){
count ++ ;
System.out.println("第"+count+"大的约数是:"+i); }
if(count==3){
break ;}
}
}
}

Ⅳ java 计算100以内所有的约数

import java.util.*;
public class Yueshu{
public static void main(String [] args){
Scanner in=new Scanner(System.in);
System.out.println("请输入一个整数:");
int num = in.nextInt();
System.out.println(num + "的约数为:");
for(int i = 1; i <= num; i++){
if(num % i == 0){
System.out.println(i);
}
}
}

}

Ⅵ java语言设计求最大公约数出现的问题和解决方案

import java.util.Scanner;

/**

* @author LLJ

* @time 2020-5-30 下午10:01:48

* @Description java语言设计求最大公约数出现的问题和解决方案

*/

public class ZuiDaGongYueShu {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println("请输入一个整数A:");

int a = scanner.nextInt();

System.out.println("请输入一个整数B:");

int b = scanner.nextInt();

int bigNumber = 1;//临时初始定义最大公约数为0

int number = 0;//初始定一个数,为了后续赋值(比较)使用

int[] aArray = gongYueShu(a);//a的所有约数组成的数组

int[] bArray = gongYueShu(b);//b的所有约数组成的数组

for(int i = 0;i < aArray.length;i++){

for(int j = 0; j< bArray.length;j++){

if(aArray[i] == bArray[j]){//判断是否是共同的约数,是的话,则把该值 赋值给number

number = aArray[i];//暂时把相等的约数赋值给number

if(number > bigNumber){//如果number大于临时定义的最大公约数bigNumber,则把number的值赋值给bigNumber

bigNumber = number;

}

}

}

}

System.out.println("最大公约数为:"+bigNumber);

}

/**

* 求一个数的所有约数

* @Time 2020-5-30 下午10:19:14

* @param number

* @return int[]

*/

public static int[] gongYueShu(int number){

int[] array = new int[number/2+1];//初始定义一个数组,为了存约数

int j = 0;//随意定义的

for(int i = 1; i <= number/2+1;i++){//number/2+1,是为了防止特殊情况出现,比如4的约数为(1,2,4),6的约数为(1,2,3,6)

if(number%i == 0){//代表是约数

array[j] = i;

j++;//如果是约数,则j+1

}

}

return array;

}

}


注1:上面为代码部分,可以直接复制到自己的IDE运行验证。

注2:网络知道的这个回答页面,对大段的代码不是太友好,所有有需要的话,可以点击链接去CSDN博客直接看整齐的代码(java语言求最大公约数),如果回答有什么不对的话,可以互相探讨(一个java爱好者答)。

Ⅶ 最大约数(Java编程),输入输出已给出。

按照你的要求编写的Java程序如下

importjava.util.Scanner;
publicclassEE{
publicstaticvoidmain(String[]args){
System.out.println("请输入一个整数n(大于等于100)");
Scannersc=newScanner(System.in);
intn=sc.nextInt();
for(inti=999;i>=100;i--){
if(n%i==0){
System.out.println(i);
break;
}
}
}
}

运行结果

请输入一个整数n(大于等于100)
555555
777

Ⅷ java中求20的约数怎么求

这个很好写啊,关键点在于20对这个数求余等于0,我刚写的:

intnum=20;
System.out.println("20的约数有:");
for(inti=1;i<=num;i++){
if(20%i==0){
System.out.println(i);
}
}

Ⅸ java编程求一个数的最大公约数

一个数是没有公约数的,下面是求最大约数的

public static void main(String[] args)throws Exception {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
if(n > 1){
for(int i=2;i<n/2;i++){
if(n%i == 0){
System.out.println(n/i);
break;
}
}
}
}

热点内容
算法牛人左 发布:2025-02-05 15:31:02 浏览:438
php筛选功能 发布:2025-02-05 15:29:09 浏览:167
ip匹配服务器 发布:2025-02-05 15:10:35 浏览:909
php语法后 发布:2025-02-05 15:10:34 浏览:59
oppor9s怎么压缩文件 发布:2025-02-05 15:00:34 浏览:639
苹果耳塞怎么改安卓也能用 发布:2025-02-05 14:50:54 浏览:558
安卓如何鉴别手机真假 发布:2025-02-05 14:28:15 浏览:121
ffmpeglinux编译 发布:2025-02-05 14:28:04 浏览:545
服务器如何做界面 发布:2025-02-05 14:27:23 浏览:291
访问学者单位推荐意见 发布:2025-02-05 14:13:05 浏览:854