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

1

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

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

大概是在小学五年级吧,(我真的不清楚是啥时候了,总之就是在我们学"分解质因数"的这段时间)
我的数学老师: "我曾经有一个学生,他是学信息学的,他的数学很好,有一次我见到他的时候,他问我 '老师,你知道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 void isPrime(Integer n) {
        if (n % 2 == 0) {
            return;
        }
        for (Integer num : nums) {
            if (n % num == 0) {
                return;//说明是合数
            }
        }
        nums.add(n);
    }

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

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 long startTime = System.currentTimeMillis();//获取开始时间
    static List<Integer> nums = new ArrayList<>();

    static void isPrime(Integer n) {
        if (n % 2 == 0) {
            return;
        }
        for (Integer num : nums) {
            if (n % num == 0) {
                return;//说明是合数
            }
        }
        nums.add(n);
    }

    public static void main(String[] args) {
        nums.add(2);
        for (int i = 2; i <= 10000; i++) {
            isPrime(i);
        }
        for (Integer num : nums) {
            System.out.println(num);
        }
        long endTime = System.currentTimeMillis();//获取结束时间
        System.out.println("程序运行时间:" + (endTime - startTime) + "ms");//输出程序运行时间
    }
}

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

posted @ 2020-09-05 14:34  abalone  阅读(400)  评论(0编辑  收藏  举报