题解 | #质数因子#java语言,用例全部通过
质数因子
http://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()){ long num = scanner.nextLong(); long k = (long) Math.sqrt(num); while(num%2==0){ System.out.print("2 "); num=num/2; } for(int i=3;i<=k;i+=2){ while(num%i==0){ System.out.print(i+" "); num=num/i; } } System.out.print(num==1?"":num+" "); } }
思路:
1.先算平方根,因为质因子不可能大于平方根。
2.循环除以2,先把2都输出了。
3.从3开始尝试除以所有奇数。
这么操作的原因是,除了2之外,偶数不可能是质数。