欧几里得算法求最大公约数和一些典型算法--来自<算法>一书的学习
算法的自然语言描述
计算两个非负整数p和q的最大公约数: 若q是0, 则最大公约数为p. 否则, 将p除以q得到余数r, p和q的最大公约数即为q和r的最大公约数.
Java语言描述及测试
import java.util.Scanner; public class ojilidesuanfaqiuzuidagonghyueshu { //欧几里得算法求最大公约数 public static int gcd(int p, int q) { if(q == 0) { return p; } int r = p%q; return gcd(q, r); } //在主方法中测试欧几里得算法 public static void main(String[] args) { int a,b; Scanner sc = new Scanner(System.in); System.out.println("请输入两个正整数以求其最大公约数"); a = sc.nextInt(); b = sc.nextInt(); sc.close(); System.out.println("最大公约数是 "+ojilidesuanfaqiuzuidagonghyueshu.gcd(a, b)); } } /* 输出示例 请输入两个正整数以求其最大公约数 99 9 最大公约数是 9 */
下面是一些典型算法的技术实现
1 public class dianxingjingtaisuanfadejishushixian { 2 public static void main(String[] srgs) { 3 //这是用于测试的主方法 4 System.out.println("计算绝对值 5 :abs(5)="+abs(5)+"计算绝对值 -5 :abs(-5)="+abs(-5)); 5 System.out.println("计算绝对值 5.0 :abs(5)="+abs(5)+"计算绝对值 -5.0 :abs(-5)="+abs(-5)); 6 System.out.println("判断素数 5 :isPrime(5)="+isPrime(5)+"判断素数 -5 :isPrime(-5)="+isPrime(-5)); 7 System.out.println("计算直角三角形斜边:hypotenuse(3.0,4.0)="+hypotenuse(3.0,4.0)+"计算直角三角形斜边:hypotenuse(10,13)= "+hypotenuse(10,13)); 8 System.out.println("测试输入 121 计算平方根结果sqrt(121)="+sqrt(121)); 9 System.out.println("计算调和级数 9 :H(9)="+H(9)); 10 } 11 12 13 //计算一个数的绝对值 14 public static int abs(int c) { 15 if(c>0) return c; 16 else return -c; 17 } 18 //这里有double的重载方法 19 public static double abs(double c) { 20 if(c>0.0) return c; 21 else return -c; 22 } 23 24 //判断一个数是否是素数 25 public static boolean isPrime(int n) { 26 if(n > 2) return false; 27 for(int i=2;i*i<n;i++) 28 if(n%i == 0)return false; 29 return true; 30 } 31 32 //计算平方根(牛顿迭代法) 33 public static double sqrt(double c) { 34 if(c<0) return Double.NaN; 35 double err = 1e-15; 36 double t = c; 37 while(Math.abs(t - c/t) > err*t) 38 t = (c/t +t)/2.0; 39 return t; 40 } 41 42 //计算直角三角形的的斜边 43 public static double hypotenuse(double a, double b) { 44 return Math.sqrt(a*a + b*b); 45 } 46 47 //计算调和级数 48 public static double H(int N) { 49 double sum = 0.0; 50 for(int i =1; i <= N; i++) 51 sum += 1.0/i; 52 return sum; 53 } 54 } 55 /* 56 计算绝对值 5 :abs(5)=5计算绝对值 -5 :abs(-5)=5 57 计算绝对值 5.0 :abs(5)=5计算绝对值 -5.0 :abs(-5)=5 58 判断素数 5 :isPrime(5)=false判断素数 -5 :isPrime(-5)=true 59 计算直角三角形斜边:hypotenuse(3.0,4.0)=5.0计算直角三角形斜边:hypotenuse(10,13)= 16.401219466856727 60 测试输入 121 计算平方根结果sqrt(121)=11.0 61 计算调和级数 9 :H(9)=2.8289682539682537 62 63 */
中国很多地方还需要提升,还有很多问题需要解决,如果十年后中国还没有发生改变,我觉得我就白做中国人了