❶ 用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;
}
}