实际上我突然想到所谓"数质数"也是因为小学时数学老师
大概是在小学五年级吧,(我真的不清楚是啥时候了,总之就是在我们学"分解质因数"的这段时间)
我的数学老师: "我曾经有一个学生,他是学信息学的,他的数学很好,有一次我见到他的时候,他问我 ‘老师,你知道10000以内最大的质数是多少吗?‘ 当时我也不知道,毕竟很少有人会去专门了解这些,因此他告诉我他用‘编程‘解决了这个问题,我希望我们班的同学以后也能够有人像他一样,不要拘泥于单纯的成绩(虽然成绩十分重要),但是将来更需要注重的还有你的 ‘自学能力‘ "
那么老师,我来"完成"你的"期望"了
首先来声明一下我所使用到的工具和技术
好的,我们开始讲讲思路
首先,(如果你不清楚),可以先了解一下质数的概念
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
看完图之后,我就当作你已经理解我的思路了哈
整点主要代码:
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