当用户输入任何一个整数时
程序要给出用户所输入的数字的prime factor

比如说 用户输入的是12
那么程序就会给出2,2,3 (因为4x3 = 2x2x3)
输入的是18,那么程序就会给出2,3,3 (2x9 = 2x3x3)

主体要求大概只有这样,我想了半天也不知道要用什么方法
请帮忙…好的话我会追加分数的。谢谢
提问者:jezz
等级:资深程序员
发布时间:2010-03-17
悬赏:0
回答
static void yinzi(int m)
{int i=2;
while( i<=m)
{
if(m%i==0) {System.out.print(i+", ");m=m/i;i=2;}
else i++;
}
}
回答者:jezz
等级:资深程序员
时间:2010-03-17
import java.util.*;
public class Main{
static public List<Integer> getPrimeList(long l,List<Integer> primeList){
List<Integer> retList=new LinkedList<Integer>();
int primeNumber=0;
if(primeList==null || primeList.size()==0){
primeNumber=2;
while(l>1){
if(isPrime(primeNumber)) {
if(l%primeNumber==0){
retList.add(primeNumber);
l=l/primeNumber;
}//if(l%primeNumber)
else primeNumber++;
}//if(isPrime)
else primeNumber++;
}//wihle
}//if
else
{
while(l>1){
if(l%primeList.get(primeNumber)==0) {
retList.add(primeList.get(primeNumber));
l=l/primeList.get(primeNumber);
}
else primeNumber++;
}

}
return retList;
}
static public boolean isPrime(long l){
long pix=(int)Math.sqrt(l);
for(long i=2;i<=pix;i++){
if(l%pix==0) return false;
}
return true;
}
static public void main(String str){
Scanner s=new Scanner(System.in);
while(true){
System.out.println("请输入一个数字(0代表结束):");
int m=s.nextInt();
if(m==0) return;
if(m<2) {System.out.println("请输入大于1的数字");continue;}
List<Integer> x=getPrimeList(m,null);
System.out.println(x);
}
}
}
回答者:jezz
等级:资深程序员
时间:2010-03-17
这个不就是分解质因数嘛。。

这个:

import java.util.*;
/**
*
* @author zzj
*
*/
public class Decomposition {
/*
*例如:输入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的值,重复执行第一步。
*/
public static void main(String args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入你要分解的整数: ");
int num = input.nextInt();
int n = num;
int temp;
String str = "";
int k = 2;
while (n != k) {
temp = n % k;
if (temp == 0) {
str += k + "*";
n = n / k;
} else {
k = k + 1;
}
}
str = num + "=" + str + k;
System.out.println(str);
}
}

重点看一下前面的分析 。
回答者:jezz
等级:资深程序员
时间:2010-03-17
public static void main(String args) {
System.out.println("请输入一个数字");
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
int n = 2;
while(num!=n){
if(num%n!=0)
n++;
else{
num = num/n;
System.out.print(n+" ");
}
}
System.out.print(num+" ");
}
回答者:jezz
等级:资深程序员
时间:2010-03-17
快到期问题
总积分排行
jezz 资深程序员reward 995
老三 中级程序员reward 65
三剑客 中级程序员reward 60
习羽 初级程序员reward 50
Fiona 初级程序员reward 45
java人 初级程序员reward 40
阿勇 初级程序员reward 35
扣921157070 初级程序员reward 35
155 初级程序员reward 35
haik 初级程序员reward 35