题解 | #质数因子#
质数因子
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);
}
}
}
}

查看1道真题和解析

