package base;import java.util.*;public class Math {
               
/**
 * @param args
 */
public static void main(String[] args) {
                    int k=2; 
int n,m=0; 
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = n;
boolean f=true;
for (int i=2; i<=2/n; i++) { //判断是否是素数
    if (n%i == 0) {
        f = false;
        break;
    }
}
if (f) {
    System.out.println(n + "=1*" + n);
} else {
    boolean s = false;
    int i = 0;
    while (n > 0)
        for (i=2; i<=n/2; i++) {
            if (n%i == 0) { //如果i是n的因数
                f = true;
                for (int j=2; j<=i/2; j++) { //判断i是不是素数
                    if (i%j == 0) {
                        f = false;
                        break;
                    }
                }
                if (f) {
                    if (s) { //如果不是第一次打印
                        System.out.print("*" + i);
                    } else { //如果是第一次打印
                        System.out.print(i);
                        s = true;
                    }
                    n /= i;
                    break;
                }
            }            
        }       
        if (i > n/2) {
           break;
        }
    }
    System.out.println("*" + n + "=" + m);
}
}

解决方案 »

  1.   


    import java.util.*;public class Math { /**
     * @param args
     */
    public static void main(String[] args) {
    int k = 2;
    int n, m = 0;
    Scanner sc = new Scanner(System.in);
    n = sc.nextInt();
    m = n;
    boolean f = true;
    for (int i = 2; i <= 2 / n; i++) { // 判断是否是素数
    if (n % i == 0) {
    f = false;
    break;
    }
    }
    if (f) {
    System.out.println(n + "=1*" + n);
    } else {
    boolean s = false;
    int i = 0;
    while (n > 0) {
    for (i = 2; i <= n / 2; i++) {
    if (n % i == 0) { // 如果i是n的因数
    f = true;
    for (int j = 2; j <= i / 2; j++) { // 判断i是不是素数
    if (i % j == 0) {
    f = false;
    break;
    }
    }
    if (f) {
    if (s) { // 如果不是第一次打印
    System.out.print("*" + i);
    } else { // 如果是第一次打印
    System.out.print(i);
    s = true;
    }
    n /= i;
    break;
    }
    }
    }
    if (i > n / 2) {
    break;
    }
    }

    }
    System.out.println("*" + n + "=" + m);
    }
    }
    记得给while的代码快加上大括号,你后面的break在while循环外,无法终止
      

  2.   

      for (int i = 2; i <= 2 / n; i++) { // 判断是否是素数
    应当是: for (int i = 2; i <=  n/2; i++)