https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2412
import java.util.*; public class Main { public static void main(String[] args) { Scanner scn = new Scanner(System.in); while(scn.hasNext()){ int n=scn.nextInt(),g=0; if(n==0)break; for(int i=1;i<n;i++){ for(int j=i+1;j<=n;j++){ g+=gcd(i,j); } } System.out.println(g); } } public static int gcd(int i,int j){ while((i%=j)!=0&&(j%=i)!=0); return i+j; } /* 題目:Q11417: GCD 作者:1010 時間:西元 2016 年 7 月 */ }
困難度 ★
這題很簡單只是呼叫gcd()自己撰寫的求最大公因數,然後再依題意雙迴圈加起來
求最大公因數的方法有兩種:
public class Main { public static void main(String[] args) { int a=300,b=250; while((a%=b)!=0&&(b%=a)!=0);//注意要括號包起來! System.out.println("The GCD is:"+(a+b)); } /* 題目:求最大公因數 方法一 作者:1010 時間:西元 2016 年 7 月 */ }
public class Main { public static void main(String[] args) { int a=300,b=250; while(b!=0){ int temp=a%b; a=b; b=temp; } System.out.println("The GCD is:"+a); } /* 題目:求最大公因數 方法二 作者:1010 時間:西元 2016 年 7 月 */ }
public class Main { public static void main(String[] args) { int a=300,b=250; System.out.println("The LCM is:"+(a*b)/gcd(a,b));//最小公倍數=兩數相乘除以兩數的的最大公因數 } public static int gcd(int i,int j){ while((i%=j)!=0&&(j%=i)!=0); return i+j; } /* 題目:求最小公倍數(結合GCD方法一實現)) 作者:1010 時間:西元 2016 年 7 月 */ }
沒有留言:
張貼留言