❶ 用java写辗转相除法 例如题目是2 3 跟18 24 求程式码
publicclassmath{
publicstaticvoidmain(Stringargs[]){
System.out.println(math.gcd(2,3));
System.out.println(math.gcd(8,42));
}
staticintgcd(inta,intb){
if((b%a)!=0){
returngcd((b%a),a);
}else{
returna;
}
}
}
main要小些,逻辑也有点问题。。上面这样改就可以得到最大公约数了
❷ 辗转相除法求最大公约数java
辗转相除法,是求两个正整数之最大公因子的算法。
辗转相除法的算法过程如下:设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b,得
a÷b=q,余数r1(0≤r1)。若r1=0,则(a,b)=b;若r1不等于0,则再用b除以r1,得b÷r1=q,余数r2
(0≤r2).若r2=0,则(a,b)=r1,若r2不等于0,则继续用r1除以r2,如此下去,直到能整除为止,其最后一个为被除数的余数的除数即为
(a, b)。
具体事例代码如下:
public class Demo2 {
public static void main(String[] args) {
int a = 49,b = 91;
while(b != 0) {
int yushu = a % b; //记录余数
a = b; //将b值赋给a值
b = yushu; //将余数赋给b值
}
System.out.println(a);
}
}
辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数。
❸ 用java编写程序,输入两个正整数,利用辗转相除法求两个整数的最大公约数和最小公倍数
自然语言描述
计算两个非负整数p 和q 的最大公约数:若
q 是0,则最大公约数为p。否则,将p 除以
q 得到余数r,p 和q 的最大公约数即为q 和
r 的最大公约数。
Java code 求公约数
publicstaticintgcd(intp,intq)
{
if(q==0)returnp;
intr=p%q;
returngcd(q,r);
}
公倍数就是两个数的积除以最大公约数。
publicstaticintg(intp,intq)
{
returnp*q/gcd(q,r);
}
❹ java:输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
程序运行截图:
publicclassTest{
publicstaticfinalvoidmain(String[]args){
System.out.println("请输入两个正整数");
System.out.print("第一个正整数:");
Scannerscanner=newScanner(System.in);
Stringone=scanner.nextLine();
inta=Integer.valueOf(one);
System.out.print("第二个正整数:");
Stringtwo=scanner.nextLine();
intb=Integer.valueOf(two);
System.out.println("a="+a+",b="+b);
//求最大公约数
//1.a÷b,令temp为所得余数(0≤r<b)
//若temp=0,算法结束;b即为答案。
//2.互换:置a←b,b←temp,并返回第一步。
inttemp,num1=a,num2=b;
if(a<b){
//互换位置
temp=b;
b=a;
a=temp;
}
System.out.println("a="+a+",b="+b);
while(b!=0){/*利用辗除法,直到b为0为止*/
temp=a%b;
a=b;
b=temp;
}
System.out.println("最大公约数:"+a);
//求最小公倍数
System.out.println("最小公倍数:"+num1*num2/a);
}
}
❺ java大数除法用到了辗转相除法了么
你好,不需要用到,可以直接利用Java集成的大数类BigDecimal类实现。函数代码如下:
import java.math.BigDecimal;
public static double div(double v1,double v2,int scale){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
❻ 用Java 求两个数的最小公倍数
//求最大公约数
publicstaticintcommonDivisor(intn,intm){
//辗转相除是用大的除以小的。如果nwhile(n%m!=0){
inttemp=n%m;
n=m;
m=temp;
}
returnm;
}
//求最小公倍数
publicstaticintcommonMultiple(intn,intm){
returnn*m/commonDivisor(n,m);//两数相乘除以最大公约数
}
❼ 辗转相除的循环体,java编程代码。求解释
方法的名字翻译成汉语是:欧几里德算法
欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。
(intm,intn){
while(true){
if((m=m%n)==0){//(m=m%n)括号表达式返回的值是m%n的值
//也就是(m=m%n)==0相当于m%n==0这个条件判断,意思是判断m能否被n整除
returnn;//如果m能被n整除,就返回n。n就是m和n的公约数
//returnn;执行之后,直接退出了这个方法,不会再while也不会执行下面的if
}//如果前面的if判断为false就不会执行returnn;则继续执行下面的if
if((n=n%m)==0){//这是反过来判断n是不是能被m整除,如果能,m就是公约数
returnm;//返回公约数m
}
}
}
❽ java 辗转相除法求最大公约数
比较好用的是辗转相除法。
比如:49和91
a b temp
49 % 91 = 49
91 % 49 = 42
49 % 42 = 7
42 % 7 = 0
所以最大公约数就是7.
public class T {
public static void main(String[] args) {
int gcd = gcd(91, 49);
System.out.println(gcd);
}
/**
* greatest commond divisor
* @param a
* @param b
* @return
*/
public static int gcd(int a, int b) {
while(b != 0) {
int temp = a%b;
a = b;
b = temp;
}
return a;
}
}
❾ java编程:用欧几里德辗转相除法求两个正整数的最大公约数
publicclasstest{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
intres=gcd(8,6);
System.out.println(res);
}
privatestaticintgcd(inti,intj){
intm,n,r;
//使m>n
if(i>j){
m=i;
n=j;
}else{
m=j;
n=i;
}
//通过辗转除来求的最大公约数
r=m%n;
while(r!=0){
m=n;
n=r;
r=m%n;
}
//返回最大公约数
returnn;
}
}