质因数分解

题目:输入一个数,并将这个数分解为几个素数的乘积。例如: 16=2x2x2x2; 20=2x5x2;3=3x1;

代码:

package primeFactorization;

import java.util.Scanner;

public classtest3{

    //判断一个数是否为素数
    publicstaticbooleanisPrimeNumber(inta){
            boolean flag = true;
            for(int b=2;b<a;b++) {
                if(a%b==0) {
                    flag = false;
                    break;
                }
            }
            return flag;
        }

    //主函数
    publicstaticvoidmain(String[] args){
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        int i = 2;
        int c = 0;
        System.out.println(isPrimeNumber(a));
        System.out.print(a+"=");
        do
        {
            if (a%i==0)
            {
                System.out.print(i+"x");
                c=a/i;
                if (isPrimeNumber(c))
                {
                    System.out.print(c);
                    break;
                }
                else
                {   a=c;
                }
            }
            if(a%i!=0)
                {
                    i++;
                }
        }while (true);

        }
}
  • 1、这题使用了 do-while循环 ,因为循环体必须要做一次。调用了 isPrimeNumber函数 ,用这个函数可以判断一个数是否是素数,返回一个boolean类型的值用于判断。
  • 2、一个非素数,需要进行分解,首先可用其对一个从2开始数进行整出判断( a%2==0 );若可以整除,说明此时可以得到一个商,在判断这个商是否为素数;若为素数则说明可以得到结果,即该数已分解为两个素数的乘积;若这个商不是素数,说明还可以进一步分解,此时将商赋值为变量a。
  • 3、第二条中,若2不能对该输入的数整除,则用3除,之后继续下一步,若3还不能,则继续增加,4,5,6,7…,(事实上只需用素数去试)。但是这需要一个小于输入数值的一个素数数组,该方法是首先想到的,但是目前没有成功写出,有语法错误。
  • 4、下面是流程图:
稿源:cyang's blog (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 综合技术 » 质因数分解

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录