求质数(筛法)

news/2024/11/8 23:03:38/

文章目录

  • 一、简介
  • 二、方法
    • 1. 试除法
    • 2. 线性筛法

一、简介

什么是质数?

质数也称素数,是指除 1 和它本身以外没有其他因数的正整数。比如,2、3、5、7、11、13 等都是质数,因为它们除 1 和它本身以外没有其他因数。相反,像 4、6、8、9、10 等就不是质数,因为它们都可以被 2 或其他数整除。质数在数学中十分重要,也有很多实际应用。

常用方法:

求质数常用的方法有以下几种:

  1. 试除法:从2开始,依次用2,3,4,……,n-1(n为待判断的数)去除n,如果都不能整除,则n为质数。但这种方法比较耗时,不太适用于大数的判断。

  2. 埃氏筛法:先把2到N的各个数放入表中,然后在2的上面画一个圆圈,然后删除表中其他数字中2的倍数;第一个既未画圈又没有被划掉的数字是3,将它画圈,再划掉表中其他数字中它的倍数;以后依次类推,即在未画圈的数中,选择最小的素数,然后画圈,再划掉表中它的倍数,依次进行,直到把不大于N的n所有的素数都筛选出来。

  3. 线性筛法:和埃氏筛法相似,但是在线性筛法中,每个合数只会被它的最小质因子筛选掉,而不重复。这个方法在求解大范围质数时效率更高。

二、方法

1. 试除法

优点

  1. 算法简单易懂,容易实现。> 2. 在小范围内的判断质数,效率较高。

缺点

  1. 对于大数的判断,效率很低,时间复杂度为O(n)。
  2. 如果判断的数是一个较大的质数,需要整除到它的平方根,这会消耗大量时间。
  3. 空间复杂度较高,需要存储2到n-1的每个自然数,占用大量的内存空间。

因此,试除法适合用于小范围内的质数判断,但不适用于大范围的质数筛选。

模板:

public class Main {public static void main(String[] args) {//求1~N(不包括N)之前所有的质数int N = 10000;int[] num = new int[N];//保存质数int index = 0;for (int i = 1; i < N; i++) {if (check(i)) {num[index++] = i;}}}private static boolean check(int a) {// TODO Auto-generated method stubif (a == 1 || a == 0) {return false;}for (int i = 2; i < a; i++) {if (a % i == 0) {return false;}}return true;}
}

2. 线性筛法

优点

  1. 在一定范围内,时间复杂度是线性的,效率高,通常要比试除法快得多。

  2. 空间复杂度较低,只需要存储1到n的每个自然数和质数表。

  3. 实现简单,易于理解和修改。

  4. 筛选出的质数是按顺序排列的,方便进行后续的计算。

缺点

  1. 算法难以突破线性复杂度,无法应对更大范围的质数筛选需求。

  2. 由于需要存储质数表,空间占用也会随着质数的增多而增加,在极端情况下可能会占用很大的内存空间。

  3. 对于某些质数,可能会被重复标记,导致效率的降低。

因此,线性筛法适用于中等规模的质数筛选,不适用于极大规模的情况。

模板:

public class Main {public static void main(String[] args) {//求1~N(不包括N)之前所有的质数int N = 10000;boolean[] bool = new boolean[N];//保存质数int[] num = new int[N];int index = 0;for (int i = 2; index < N ; i++) {if (!bool[i]) {num[index++] = i;}for (int j = 0; num[j] * i < N; j++) {bool[num[j] * i] = true;if (i % num[j] == 0) {break;}}}}
}

http://www.ppmy.cn/news/241068.html

相关文章

从原理到CMOS图像传感器玩家,一文读懂手机摄像头所有猫腻

中国是全球手机产业中心。数据统计&#xff0c;全球有超过40% 的手机来自于中国&#xff0c;智能手机全球出货量&#xff0c;中国大陆手机份额超38%。 庞大的市场造就了中国独一无二的产业链。其中&#xff0c;手机摄像头行业备受关注。目前&#xff0c;主流一线摄像头模组厂商…

浅析HEVC/H.265编码器中的熵编码

在保证视频图像质量的前提下&#xff0c;HEVC通过增加一定的计算复杂度&#xff0c;可以实现码流在H.264/AVC的基础上降低50%。为了实现目标&#xff0c;HEVC采用了一些全新的编码技术&#xff0c;比如&#xff1a;基于LCU&#xff08;Largest Coding Unit&#xff09;和四叉树…

紫光展锐六款芯片支持Android 11,SC9863A备受手机厂商青睐

近日&#xff0c;紫光展锐发布的一则消息吸引了业界的关注。该公司表示&#xff0c;通过同步参与Android 11的开发&#xff0c;其六款智能手机芯片已完成对Android 11的部署。在Google发布Android 11正式版的同时&#xff0c;紫光展锐就宣布其芯片平台针对Android 11实现同步升…

uoni扫地机器人好用吗_扫地机器人好用吗?扫盲选购看这篇

扫地机器人好用吗&#xff1f;扫盲选购看这篇 2020年09月05日 15:40作者&#xff1a;黄页编辑&#xff1a;黄页 分享 扫地机器人是智能家居中的热门产品,但仍然有不少人对它持怀疑态度,认为买回来就是摆设还浪费钱。并且,市场上各种扫地机器人品牌的性能和价位都参差不齐,导致有…

云服务与设备供应商

云服务与设备供应商 云服务提供商正在摆脱硬件提供商 云服务提供商通过购买基础架构将其群集&#xff0c;以软件的形式向用户提供服务&#xff0c;软件是云服务提供商的自然优势。 随着云计算变得越来越成熟&#xff0c;云服务提供商逐渐转向硬件研发。 自云计算兴起以来的十多…

2022年超高清视频行业研究报告

第一章 行业概况 2022年2月4日晚&#xff0c;国家大剧院联合北京广播电视结合8K超高清技术&#xff0c;在歌剧院对北京2022年冬奥会开幕式进行了8K直播。 这次直播采用北京广播电视台冬奥纪实8K试验频道作为信号源&#xff0c;运用我国自主知识产权的AVS3编码技术&#xff0c…

Unity VUFORIA 推荐设备

Vuforia Engine SDK已 使用诸如图像目标&#xff0c; VuMarks&#xff0c; 多目标等仅视觉功能针对支持的移动设备平台进行了优化。 仅 视觉功能将在许多设备上运行&#xff0c;包括许多未在下面列出的设备。 诸如模型目标&#xff0c; 区域目标和 地平面之类的高级功能 需要…

要闻君说:国产5G 手机只比普通版手机贵500元?菜鸟物联网机器人分拨中心首落南京!亚马逊推出的AWS集中式备份服务来啦!...

关注并标星星CSDN云计算 每周三次&#xff0c;打卡即read 更快、更全了解泛云圈精彩news go go go 嗨&#xff0c;大家好&#xff01;偶是要闻君。借着自家年会即将开幕的兴奋劲&#xff0c;继续给各位看官们带来最新、最扎眼的泛云圈大新闻&#xff0c;还是先听首歌曲&#x…