题解 | #最大公约数#

质数因子

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

// 判断数字是否为质数,改进用根号降低时间复杂度
import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        ArrayList<Integer> arr = new ArrayList<Integer>();
        get(arr,n);
        if(arr.size() == 0)
            arr.add(n);
        for(int i = 0;i < arr.size();i++){
            System.out.print(arr.get(i)+" ");
        }
    }
    public static void get(ArrayList<Integer> arr,int n) {
        // extern condition:identiy is zhi number
        if(isNumber(n)){
            arr.add(n);
            return;
        } 
        for(int i=2;i<=Math.sqrt(n);i++){
            if(n % i == 0){
                n = n / i;
                arr.add(i);
                break;
            }
        }
        get(arr,n);
    }
    public static boolean isNumber(int n) {
        for(int i = 2;i<=Math.sqrt(n);i++){
            if(n % i == 0)
                return false;
        }
        return true;
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
03-22 14:51
已编辑
复旦大学 前端工程师
之前做过的项目都是和前端有关的,本人也比较喜欢设计和所见即所得的编程体验。css&nbsp;学的比较好,Vue,&nbsp;html,&nbsp;网络属于还凑合能应付面试,但是&nbsp;js&nbsp;没有系统学过,现在在暑期实习面试中狠狠被拷打。现在大三,后续考虑出国读研,感觉现在&nbsp;all&nbsp;in&nbsp;前端是不是有点把路走窄了?求广大牛友指路btw:两周可以把&nbsp;js&nbsp;学好莫?能过笔试面试的水平(差不多用两周的1/3的时间)
股真人:1. 朋友,你bg fdu,而且可以读美研,这个平台绝大多数人的认知指导不了你,在这里问能得到什么呢?(而且光看你提的这个问题,无法让人看出你是fdu这个水平的学生)2. 如果是确认了喜欢前端,那么就all in;如果只是有点感兴趣,那找个实习来玩玩,让自己认识更清楚;如果是畏难心理选的,那只能说思维方式有问题。3. 强调自己是女生是什么意思?自己看不起自己?你要去的美国认可这种文化吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务