将一个正整数分解质因数。用Java编,,有会的吗。。。谢谢啦。。。
呵呵,楼主是初学者吧,这个只要动动脑筋,也很容易实现的。
且看看我的代码吧:
import java.util.*;
public class Nicki{
public static void main(String[] args){
System.out.println("java分解正整数质因数例子!");
System.out.println("请你输入一个正整数,并按Enter确认");
Scanner sc=new Scanner(System.in);
int Num=sc.nextInt();
//首先,我们需要得到,输入的这个数Num的一半以内的所有质数
Vector<Integer> vec;
vec=new Vector();
Lab:for(int i=2;i<=Num;i++){
for(int j=2;j<=i/2;j++){
if(i%j==0&&i!=2){//说明能被整除,则i不是质数
continue Lab;
}
}
//内层for正常完成后,说明i是质数
vec.add(i);//添加到列表
}
//下面开始分解质因数
System.out.println(Num+"的分解结果是:\n");
System.out.print(Num+"=");
int theNum=Num;
boolean help=true;
for(int k=0;k<vec.size();k++){
int qq=(int)vec.get(k);
if(theNum<qq)
break;
if(theNum%qq==0){//水明能被整除,则qq就是Num的一个质因数
if(help==true){
System.out.print(qq);
help=false;
}else{
System.out.print("*"+qq);
}
k--;//因为,完全有可能Num还能被qq整除,
//所以重新执行一遍
theNum=theNum/qq;
}
}
System.out.println("\n分解完毕!");
}
}
通过注释能够看懂吧,下面是我运行的结果,希望你能满意哦。
import java.util.ArrayList;
import java.util.List;
public class SplitToPrimeFactor {
/**
*
* @param data待分解的正整数
*/
public static void split(int data){
List<Integer> primeFactor = new ArrayList<Integer>();//用于保存分解的质因数
for(int i = 2; i<=data/2; i++){
if(data%i==0){
int j;
for( j = 2; j<=i/2; j++){
if(i%j==0) break;
}
if(j>i/2) primeFactor.add(i);
}
}
System.out.print(data+" 的质因数有:");
for(Integer i : primeFactor){
System.out.print(i+",");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SplitToPrimeFactor.split(6);
}
}