题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

解决方案 »

  1.   

                    int number = 90;
    int maxPart = (int)Math.sqrt(new Double(number));
    List<Integer> numList = new ArrayList<Integer>();
    for(int i=2;i<maxPart;i++){
    while(number%i==0){
    number = number/i;
    numList.add(i);
    }
    }
    System.out.println(numList.toString());
      

  2.   

    哦,1楼的有错,改一下 int number = 90;
    List<Integer> numList = new ArrayList<Integer>();
    for(int i=2;i<number+1;i++){
    while(number%i==0){
    number = number/i;
    numList.add(i);
    }
    }
    System.out.println(numList.toString());
      

  3.   

    public static void zhiyinshu(int n) {
    StringBuilder sb = new StringBuilder();
    for (int i = 2; i <= n;) {
    while (n % i == 0) {
    n = n / i;
    // if(i != n)
    sb.append(i + "*");
    // else sb.append(i);
    }
    i++;
    }
    sb.deleteCharAt(sb.toString().length() - 1);
    System.out.println(sb.toString());
    }
      

  4.   


    package zhchljr;import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Scanner;public class Main {
    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("请输入一个正整数:");
    int num = input.nextInt();
    print(num, find(num, getPrime(num)));
    }


    //写一个函数,找出2到输入的数字一半之间的所有素数
    public static List<Integer> getPrime(int num) {
    List<Integer> primes = new ArrayList<Integer>();
    for(int i=2; i<= num/2; i++) {
    if(isPrime(i)) {
    primes.add(i);

    }
    return primes;
    }

    //判断一个整数是否为素数
    public static boolean isPrime(int num) {
    boolean flag = false;
    int i;
    for(i=2; i<=num/2; i++) {
    if(num % i == 0) {
    break;
    }
    }
    if(i >= num/2) {
    flag = true;
    }
    return flag;
    }

    //找输入的数字的质因子,返回找到的所以质因子
    public static List<Integer> find(int num, List<Integer> primes) {
    List<Integer> results = new ArrayList<Integer>();
    Collections.sort(primes);
    int d;
    Iterator<Integer> iterator = null;
    while(num > 1) {
    iterator = primes.iterator();
    while(iterator.hasNext()) {
    d = iterator.next();
    if(num % d == 0) {
    results.add(d);
    num = num / d;
    break;
    }
    }
    }
    return results;
    }

    //组合质因子,得到最终的结果
    public static void print(int num, List<Integer> results) {
    Iterator<Integer> iterator = results.iterator();
    StringBuffer sb = new StringBuffer();
    sb.append(num + "=");
    while(iterator.hasNext()) {
    sb.append(iterator.next() + "*");
    }
    System.out.println(sb.substring(0, sb.length() - 1));
    }
    }楼主,这是我利用上班的时间写的程序,楼主看看,能否满足需求!祝你好运!
      

  5.   


    这个还不错,但是可以对循环做一些改变。 public static void zhiyinshu(int n)
    {
    StringBuilder sb = new StringBuilder();
    int m = n;
    for (int i = 2; i <= m / 2;)
    {
    while (n % i == 0)
    {
    n = n / i;
    sb.append(i + "*");
    }
    i++;
    }
    if (sb.length() > 0)
    {
    sb.deleteCharAt(sb.toString().length() - 1);
    }
    else
    {
    sb.append(n);
    }
    System.out.println(sb.toString());
    }
      

  6.   


    public static String zhiyinshu(int num) {
    String result = "";
    int count = 2;
    while (true) {
    if (num % count == 0) {
    result += (count + "*");
    num = num / count;
    } else {
    count++;
    }
    if (num < count) {
    break;
    }
    }
    if (result.endsWith("*")) {
    result = result.substring(0, result.length() - 1);
    }
    return result;
    }