题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
求质数因子,解题思路:
1.首先考虑特殊情况(num==1),因为题目给定的数据范围包括num=1;
2.然后循环遍历求质数因子。注意对循环条件进行“剪枝”,i从2遍历到sqrt(num)即可,加快运行速度;
3.最后判断是否有剩余质数因子,如果num!=1说明还有剩余质数因子。比如93928=2*13*3613,√93938=306,当循环结束后num=3613,打印出来即可。
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextInt()) { // 注意 while 处理多个 case int num = in.nextInt(); if(num==1) System.out.println(num); int k = (int)Math.sqrt(num); for(int i=2; i<=k; i++){ while(num%i==0){ System.out.print(i+" "); num = num/i; } } if(num==1){ System.out.println(""); }else{ System.out.println(num); } } } }