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; } } } }