关于Java中的几个数论中的知识

1、将一个正整数分解质因数。例如,输入90,则打印 90=2*3*3*5;

import java.util.Scanner;

/**
 * 分解质因数
 * @author Administrator
 *
 */
public class Test2 {

    /**
     * @param args
     */
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        // 提示
        System.out.println("请输入一个正整数:");
        int number = input.nextInt();

        String str = "";
        int i = 2;
        for (i = 2; i < number; i++) {
            if (number % i == 0) {
                str += i + "*";
                number = number / i;
                i--;
            }
        }
        str += i;
        System.out.println(number + "的分解质因素结果为:" + str);

    }

}

 

 

 

2、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

/**
 * 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
 * @author Administrator
 *
 */
public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        long k = 0;
        for (k = 1; k <= 100000l; k++) {
            if (Math.floor(Math.sqrt(k + 100)) == Math.sqrt(k + 100)
                    && Math.floor(Math.sqrt(k + 168)) == Math.sqrt(k + 168)) {
                System.out.println(k);
            }

        }
    }

}

 

 

 

3、输入两个正整数m和n,求其最大公约数和最小公倍数。

 

public class Test3 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        
        // 参考示例:求24和60的最大公约数,先分解质因数,得24=2×2×2×3,60=2×2×3×5,24与60的全部公有的质因数是2、2、3,它们的积是2×2×3=12,所以,(24,60)=12。
        // 参考示例:求6和15的最小公倍数。先分解质因数,得6=2×3,15=3×5,6和15的全部公有的质因数是3,6独有质因数是2,15独有的质因数是5,2×3×5=30,30里面包含6的全部质因数2和3,还包含了15的全部质因数3和5,且30是6和15的公倍数中最小的一个,所以[6,15]=30。
        Scanner input =new  Scanner(System.in);
        
        System.out.println("请输入第一个数:");
        int a=input.nextInt(); // 第一个数
        System.out.println("请输入第二个数:");
        int b=input.nextInt(); // 第二个数
        
        int gongyue=0;  
        if(a<b)  
        {   //交换a、b的值  
            a=a+b;  
            b=a-b;  
            a=a-b;  
        }  
        if(a%b==0)  
        {  
            gongyue = b;  
        }  
        while(a % b>0)  
        {  
            a=a%b;  
            if(a<b)  
            {  
                a=a+b;  
                b=a-b;  
                a=a-b;  
            }  
            if(a%b==0)  
            {  
                gongyue = b;  
            }  
        }  
        
        System.out.println("最大公约数是:"+gongyue);
        
        int gongbei=(a*b)/gongyue;
        
        System.out.println("最小公倍数是:"+gongbei);
    }

}

 

 

几个知识点介绍:

因数:假如a*b=c(a、b、c都是整数),那么我们称a和b就是c的因数。例如,1*2=2; 那么1和2就是2的因数。

质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数。例如,2 只有1和2(他本身)这两个因数,所以2是质数。4 可以有2和2,也可以有1和4,所以不满足质数的概念。示例:100以内质数表(2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97)

合数,数学用语,英文名为Composite number,指自然数中除了能被1和本身整除外,还能被其他数(0除外)整除的数(如:4,6,8,9,10)。与之相对的是质数,而1既不属于质数也不属于合数。最小的合数是4。其中,完全数与相亲数是在它的基础上的。

分解质因数(把合数分解成质数):把一个合数分解成若干个质因数的乘积的形式,即求质因数的过程叫做分解质因数。每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数。 分解质因数只针对合数。例如,4=2X2


质因数分解法:把每个数分别分解质因数,再把各数中的全部公有质因数提取出来连乘,所得的积就是这几个数的最大公约数。


例如:求24和60的最大公约数,先分解质因数,得24=2×2×2×3,60=2×2×3×5,24与60的全部公有的质因数是2、2、3,它们的积是2×2×3=12,所以,(24,60)=12。


把几个数先分别分解质因数,再把各数中的全部公有的质因数和独有的质因数提取出来连乘,所得的积就是这几个数的最小公倍数。


例如:求6和15的最小公倍数。先分解质因数,得6=2×3,15=3×5,6和15的全部公有的质因数是3,6独有质因数是2,15独有的质因数是5,2×3×5=30,30里面包含6的全部质因数2和3,还包含了15的全部质因数3和5,且30是6和15的公倍数中最小的一个,所以[6,15]=30。

 

posted @ 2017-08-29 09:17  xiaobudong  阅读(477)  评论(0编辑  收藏  举报