首页 > 编程语言 > 详细

《关于我教普奇神父数质数这档事》=>Java算出一定范围内的质数

时间:2020-09-05 17:30:11      阅读:100      评论:0      收藏:0      [点我收藏+]

技术分享图片

没错,也许这将是一篇很有意思的博客

实际上我突然想到所谓"数质数"也是因为小学时数学老师

大概是在小学五年级吧,(我真的不清楚是啥时候了,总之就是在我们学"分解质因数"的这段时间)
我的数学老师: "我曾经有一个学生,他是学信息学的,他的数学很好,有一次我见到他的时候,他问我 ‘老师,你知道10000以内最大的质数是多少吗?‘ 当时我也不知道,毕竟很少有人会去专门了解这些,因此他告诉我他用‘编程‘解决了这个问题,我希望我们班的同学以后也能够有人像他一样,不要拘泥于单纯的成绩(虽然成绩十分重要),但是将来更需要注重的还有你的 ‘自学能力‘ "


那么老师,我来"完成"你的"期望"了
首先来声明一下我所使用到的工具和技术

  1. 编译器: IntelliJ IDEA 2020.1
  2. 编程语言: Java
  3. 编程依赖: Java自带类库以及环境
  4. 当然你需要有一定的Java编程基础
  5. 本文为原创,编程中的代码没有参考任何网络资料(指查询网络中已有的"Java找质数类的文章")

好的,我们开始讲讲思路
首先,(如果你不清楚),可以先了解一下质数的概念

质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

  • 在我们的代码中,我将使用一种神奇的方法去判断质数: 我们知道质数就是因数只有1和他本身的自然数 (大于1,并且下文中我所说的数字的范围都是大于1的自然数) ,那么我们实际上就可以判断=>每一个数字都是有质数之间相乘产生的,因此我们从2开始一直循环到10000,其中不能被质数整除的数字即为质数(每获取到一个质数,那么我们就把获取到的质数存储起来),那么大概意思就相当于是下图:

技术分享图片

看完图之后,我就当作你已经理解我的思路了哈

整点主要代码:

static List<Integer> nums = new ArrayList<>();
static boolean forPrimeNum(Integer i) {
  if (i % 2 == 0 && i != 2) return true;
	for (Integer num : nums) {
            if (i % num == 0) {
                return true;//表示可以整除
            }
        }
    return false;//不能整除
}

for (int i = 2; i <= 100000; i++) {
	if (!forPrimeNum(i)) {
		nums.add(i);
	}
    }
//那么所有的质数就存储到了nums集合里了

然后我们再加一点点细节,就得到了完整的代码了:

package cn.abalone.test;

import java.util.ArrayList;
import java.util.List;

/**
 * Create by Abalone
 * CreateTime: 2020/9/5 12:17
 */

public class PrimeNumber {
    static List<Integer> nums = new ArrayList<>();
    static long startTime = System.currentTimeMillis();//获取开始时间
    static boolean forPrimeNum(Integer i) {
        if (i % 2 == 0 && i != 2) return true;
        for (Integer num : nums) {
            if (i % num == 0) {
                return true;//表示可以整除
            }
        }
        return false;//不能整除
    }
    public static void main(String[] args) {
        for (int i = 2; i <= 100000; i++) {
            if (!forPrimeNum(i)) {
                nums.add(i);
            }
        }
        for (Integer num : nums) {
            System.out.println(num);
        }
        long endTime = System.currentTimeMillis();//获取结束时间
        System.out.println("程序运行时间:" + (endTime - startTime) + "ms");//输出程序运行时间
    }
}

那么~这次的内容比较简单,相信大部分(学过的)人都能看懂,也许对你的帮助并不会很大,毕竟这只不过是我的一次突发奇想罢了?_?
那就白白咯~

《关于我教普奇神父数质数这档事》=>Java算出一定范围内的质数

原文:https://www.cnblogs.com/abalone/p/13618125.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!