Java教程

Java获取某个数,所有质(素)数(重复的也要列举)满足执行时间的算法

本文主要是介绍Java获取某个数,所有质(素)数(重复的也要列举)满足执行时间的算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException {
        Scanner scan = new Scanner(System.in);while (scan.hasNextLong()) {
            long num = scan.nextLong();
        // 2是最小的质数,所以从2开始,为了提升效率,判断到num的平方根即可(ps :原因见下面)
            for (int i = 2; i <= (long) Math.sqrt(num); i++) {
               // 能整除,说明i是num的质数(注意不是质数的不可能出现在此处,如4,9等已经在i=2,3,时被分解了,故能整除num的指定是质数)
                while (num % i == 0) {
                    System.out.print(i + " ");
            // 1.num /= I除掉该质数后,继续找是否还有重复的该质数. 2.没有则进行下一个数i+1是否是质数判断
                    num /= i;
                }
            }
       // 对于分解到最后的数,若不能被最后的i整除,若不是1,则是num最大的质数
            if (num != 1)
                System.out.println(num);
        }

    }
}

为什么找质数(素数),找到平方根就可以了,见下图:

 

 

参考链接:https://blog.csdn.net/hello_word2/article/details/51940092

 

这篇关于Java获取某个数,所有质(素)数(重复的也要列举)满足执行时间的算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!