黑马程序员技术交流社区
标题:
分解质数因子
[打印本页]
作者:
Jaybor
时间:
2015-5-28 22:01
标题:
分解质数因子
本帖最后由 Jaybor 于 2015-5-28 22:02 编辑
需求:给定一个正整数n,将其分解成质因数,例如:90=2*3*3*5;
思路:
* 1.判断n的最小质数因子k,如果n等于k就直接输出结果
* 2.如果n>k
* n能被k整除,那么用n/k的上作为新的n
* n不能被k整除,用k+1代替k
* 3.必须注意的是最后一项可能会小于k导致在循环体内没有被添加,这时要在循环结束后补上;
* 例子:90=2*3*5*,最后一项为3,而此时k=6,这时就会少输出一项;
代码:
public class Test2{
public static void main(String[] args) {
//定义n
int n=16;
System.out.print(n+"=");
int k=2;
while(k<=n){
if(k==n){
System.out.println(k);
return;//如果最后一项n等于k那么就不用在执行循环后的打印语句了
}else if(n%k==0){
System.out.print(k+"*");
n=n/k;
}
k++;
}
System.out.print(n);//防止最后一项n小于k导致没有被添加到结果中去,从而产生错误。
}
}
复制代码
作者:
熙熙攘攘
时间:
2016-3-21 10:40
{:2_32:}。。。。。
作者:
suwen10
时间:
2016-3-21 11:00
package Test;
//给定一个正整数n,将其分解成质因数,例如:90=2*3*3*5
/**
* 1.判断这个数是否是素数,是:不作处理,否:下一步
* 2.知道最小素数因子,记录(输出),
* 3.除去最小因子,这个数重复第一步*/
public class Test3 {
public static void main(String[] args) {
//定义n
int n=200;
System.out.print(n+"=");
int k=2;
while(k<=n){
if(k==n){
System.out.println(k);
return;//如果最后一项n等于k那么就不用在执行循环后的打印语句了
}else if(n%k==0){
System.out.print(k+"*");
n=n/k;
}
[color=Red] else
k++;[/color]
}
System.out.print(n);//防止最后一项n小于k导致没有被添加到结果中去,从而产生错误。
}
}
复制代码
代码少了一个else,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2