黑马程序员技术交流社区
标题:
将一个正整数分解质因数。
[打印本页]
作者:
刘伟平
时间:
2012-10-14 17:12
标题:
将一个正整数分解质因数。
题目:将一个正整数分解质因数。例如:输入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;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2