当用户输入任何一个整数时
程序要给出用户所输入的数字的prime factor
比如说 用户输入的是12
那么程序就会给出2,2,3 (因为4x3 = 2x2x3)
输入的是18,那么程序就会给出2,3,3 (2x9 = 2x3x3)
主体要求大概只有这样,我想了半天也不知道要用什么方法
请帮忙…好的话我会追加分数的。谢谢
回答
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++;
}
}
{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);
}
}
}
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);
}
}
重点看一下前面的分析 。
这个:
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+" ");
}
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


995