最大公约数和最小公倍数 分解质因数 完全平方数

来源:互联网 发布:java获取数组长度 编辑:程序博客网 时间:2024/05/04 05:43

最大公约数和最小公倍数

分解质因数

完全平方数

package arithmetic;/** *  求最大公约数和最小公倍数 *  分解质因数 80=2*2*2*2*5 * *  有1、2、3、4个数字, *  能组成多少个互不相同且无重复数字的三位数? *      都是多少? *   *  一个整数,它加上100后是一个完全平方数, *    加上168又是一个完全平方数,请问该数是多少? * * @author sunRainAmazing * */public class NumberDemo {    public static void main(String[] args) {        int a=63,b=28;        System.out.println(a+" ,  "+b +"的最大公约数为:"                        +getCommonDivisor1(a,b));        System.out.println(a+" ,  "+b +"的最大公约数为:"                +getCommonDivisor(a,b));        System.out.println(a+" ,  "+b +"的最小公倍数为:"                +a*b/getCommonDivisor(a,b));        resolvePrime(80);        arrangeNumber();        getNumber();    }    /**     * 求两个数的最大公约数     * @param n     * @param m     * @return     */    public static int getCommonDivisor(int n,int m){        while(true){            if((n%=m)==0)                return m;            if((m%=n)==0)                return n;        }    }    /**     *   返回 最大公约数 a     * @param a      * @param b      * @return     */    public static int getCommonDivisor1(int a,int b){        //交换两个数        if(a<b){            int temp=a;            a=b;            b=temp;        }        while((a%b)!=0){            a%=b;            //交换两个数            if(a<b){//这种方式有缺陷---当值比较大时容易越界                a+=b;                b=a-b;                a-=b;            }        }        return b;    }    /**     * 进行传入参数分解质因数     * 程序分析:对n进行分解质因数,应先找到一个最小的质数k,     * 然后按下述步骤完成:     *      (1)如果这个质数恰等于n,     *              则说明分解质因数的过程已经结束,打印出即可。       *      (2)如果n <> k,但n能被k整除,则应打印出k的值,     *              并用n除以k的商,作为新的正整数你n,重复执行第一步。      *      (3)如果n不能被k整除,则用k+1作为k的值,     *              重复执行第一步。     * @param number     */    public static void resolvePrime(int number){        System.out.print("分解质因数:"+number+"=");        int k=2;        while(k <= number){             if(k==number){                 System.out.println(number);                 break;              }else if(number%k==0){                    System.out.print(k+"*");                    number /= k;              }else{                 k++;                }        }      }    /**     * 有1、2、3、4个数字,     * 能组成多少个互不相同且无重复数字的三位数?都是多少?     */    public static void arrangeNumber(){        int i,j,k;        i=j=k=0;        int count=0;        for(i=1;i<=4;i++)            for(j=1;j<=4;j++)                for(k=1;k<=4;k++)                    if(i!=j && j!=k && i!=k){                        count+=1;//count++;    ++count;                        System.out.println(i*100+j*10+k+"\t");                    }          System.out.println ("\n经过排列组合后,有"+count+"个数");    }    /**     * 利用Math的相关方法进行测试     * 一个整数,它加上100后是一个完全平方数,     *      加上168又是一个完全平方数,请问该数是多少?     *      Math.floor() 向下取整     *      Math.sqrt()  取开方值     */    public static void getNumber(){        long number=1;        for(;number<=10000000l;number++)            //向下取整Math.floor()            if( Math.floor(Math.sqrt(number+100))==Math.sqrt(number+100)                 && Math.floor(Math.sqrt(number+168))==Math.sqrt(number+168)){                    System.out.println(number);                    break;            }    }}
1 0
原创粉丝点击