题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。- /*
- 程序分析:对n 进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
- (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
- (2)如果n!=k,但n 能被k 整除,则应打印出k 的值,并用n 除以k 的商,作为新的正整数n,重复执行第一步。
- (3)如果n 不能被k 整除,则用k+1作为k 的值,重复执行第一步。
- */
- class Test04
- {
- public static void main(String[] args)
- {
- //参数传入要分解质因数的正整数
- resolve(13463634);
- }
- //输出
- public static void resolve(int num)
- {
- //判断是否是正整数
- if (num<0)
- {
- System.out.println("请输入正整数");
- return;
- }
- String result = num+" = ";
- int k = 2;
- while ((k = minRemNum(num)) != num)
- {
- result +=k + "*";
- num = num/k;
- System.out.println(result);
- }
- System.out.println(result+k);
- }
- //获得能整除num的最小素数
- private static int minRemNum(int num)
- {
- for (int r = 2; r<num+1 ; r++ )
- {
- if(isRem(r) && num%r==0)
- return r;
- }
- return 1;
- }
- //判断参数是否是素数
- private static boolean isRem(int r)
- {
- for (int m = 2; m<r ; m++ )
- {
- if (r%m == 0)
- return false;
- }
- return true;
- }
- }
复制代码 |