题解 | #质数因子#

质数因子

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

解题思路:

本题主要是将一个输入的数转换成若干项质数乘积的表达式,这里有两个函数,一个是判断num是否为质数,一个是求大于或等于offset的下一个质数。因为我们必须保证输出的一定是质数,所以每次需要判断输入的num是否为质数,如果是质数,可以直接输出;如果不是质数,就要首先判断能否被最小的质数整除,如果能整除,就更新num的值为num / first进入下次循环;如果不能整除,就不能更新num的值,需要将质数扩大,但是又不能太大,我这里取得就是first下一个质数。最终循环终止条件就是num=1,表示num已经完全被质数整除了。

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        long num = scan.nextLong();
        int first = 2;
        while (num != 1) {
            if (isZhiShu(num)) {
                System.out.print(num + " ");
                break;
            }
            if (num % first == 0) {
                System.out.print(first + " ");
                num = num / first;
            } else {
                first = nextZhiShu(first + 1);
            }
        }
//        System.out.println(first + "的下一个质数:" + nextZhiShu(first+1));
//        System.out.println(num + "是质数吗?" + isZhiShu((int)num));
    }

    private static int nextZhiShu(int offset) {
        while (!isZhiShu(offset)) {
            offset++;
        }
        return offset;
    }

    public static boolean isZhiShu(long num) {
        for (int i = 2; i <= Math.pow(num,0.5); i++) {
            if (num % i == 0)
                return false;
        }
        return true;
    }

}
全部评论

相关推荐

09-18 15:39
门头沟学院 Java
小肥罗:感谢信+10086
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
09-19 14:43
实习之后才知道团队氛围的重要性来了一周,从第三天就开始想离职……团子背景、薪资福利再怎么好,也不香了
码农索隆:确实,团队的氛围真的很影响心情,好的团队上班感觉轻松愉快,不好的团队,每天没事就整点幺蛾子
投递美团等公司10个岗位
点赞 评论 收藏
分享
09-01 11:31
门头沟学院 Java
buul:七牛云的吧,感觉想法是好的,但是大家没那么多时间弄他这个啊。。。不知道的还以为他是顶尖大厂呢还搞比赛抢hc,只能说应试者的痛苦考察方是无法理解的,他们只会想一出是一出
点赞 评论 收藏
分享
码农索隆:邮件那么小的内存,把邮箱都干满了
点赞 评论 收藏
分享
09-17 17:19
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务