编程语言
首页 > 编程语言> > 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,Scanner,scan,质数,System,算法,num,列举,整除
来源: https://www.cnblogs.com/duiyuedangge/p/15744553.html