PAT 练兵场 乙级题目中 “分解因子”的疑惑
原题url如下:http://www.nowcoder.com/pat/2/problem/262
我的代码在机器上运行是能够得到正确的结果,可是提交之后有个测试用例“3=3”不能通过,我百思不得期间,不知道哪里多了空格还是少了空格,我想知道测试用例得到的结果应该是怎么一个空格?难道这空格还会受到中文和英文的影响?
我的代码如下:
import java.util.Scanner;
/*这样一个事实,若一个整数n有一个大于sqrt(n)的因子,则n的其他因子必然小于sqrt(n),且大于sqrt(n)的因子最多只有一个。
* 因此,上面的代码在查找数n的因子时,只需循环到sqrt(n)就可以。
* 并且,这个大于sqrt(n)的因子必然是一个质数,或者为1,所以最后再乘一个m。*/
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
// long startTime = System.currentTimeMillis();
int n = scanner.nextInt();
fun(n);
// long endTime = System.currentTimeMillis();
// System.out.println("\n" + (endTime - startTime));
}
}
static void fun(int n) {// 分解正数x并将质因子输出的方法
int m = n;
System.out.print(n + " = ");
for (int i = 2; i <= Math.sqrt(n) && m != 1; i++) {
while (m % i == 0) {
m /= i;
if (m != 1) {
System.out.print(i + " * ");
} else {
System.out.print(i);
}
}
}
for (int i = (int) Math.sqrt(n) + 1; i <= n; i++) {
if (m % i == 0) {
System.out.print(i);
break;
}
}
}
}


