题解 | #质数因子#

质数因子

https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607

import java.util.ArrayList;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int num = in.nextInt();
        for (int i = 2; i <= num; i++) {
		  // 判断一下这个数字是不是质数,如果是质数的话,直接输出它本身就好
            if(isper(num)){
                System.out.print(num+"");
                break;
            }
                
            if (num % i == 0) {
                num /= i;
                System.out.print(i+" ");
                i = 1;
            }
        }
    }
	// 原本是没有这个方法的,但是在上面去取质因数的时候,如果数字太大,会运行超时,所以不能循环结束,因此加一个判断它是否是质数的,这样可以节省时间
  	//判断质数我们不需要完全遍历这个数字,只需要对他开放,然后看开方后的数字能否对某个数字取余即可.
    static boolean isper(int num){
        for(int i=2;i<=Math.sqrt(num);i++){
            if(num%i==0)
            return false;
        }
        return true;
    }
}

全部评论

相关推荐

头像
05-22 20:17
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务