- 10
- 0
- 约1.06万字
- 约 9页
- 2019-10-08 发布于福建
- 举报
求素数列表和判断素数的算法
有兴趣阅读本文的读者,应该对素数概念是十分熟悉的了。用计算机程序实现素数计算,集中在2个主要问题上:
判断一个正整数是否是素数-(算法A)
求一定范围内的素数列表- (算法B)
关于素数的算法,根据素数的数学性质,大家都会想到如下几个方面:
用遍历求模的方式判断素数
素数都是奇数,可以在奇数数列中寻找素数
利用开方来缩小搜索的范围
然后,求素数的计算是复杂的,如果算法写得不好,则耗时较高。在百度百科“素数”条目中的算法程序,是值得商榷的。很多方法是O(N2)的算法。
为此,在本文中探讨了求素数列表和判断素数这两个算法,力图使算法可以达到O(N Log(N))优化级别。在本文中,算法语言选用C#。
1,判断素数的简单实现(算法A-1)
/// summary
/// 算法A-1,判断素数
/// /summary
/// param name=number待测正整数/param
/// returns是否为素数(为了简化,1以下的整数皆为素数)/returns
public static bool IsPrime(int number)
{
// 为了简化,1以下的整数皆为素数
if(number = 2)
{
return true;
}
// 奇偶性
if (number % 2 == 0)
{
return false;
}
// 利用开方缩小范围,优化效果十分明显
int range = (int)Math.Sqrt(number) + 1;
// 从3开始的奇数列
for (int current = 3; current = range; current += 2)
{
// 判断是否为素数
if (number % current == 0)
{
// 合数
return false;
}
}
return true;
}
A-1算法中,首先判断奇偶性,再判断从3开始判断待查数(number)是否是合数,若到Math.Sqrt(number)还没有查到是合数,即为素数。
这个方法是O(N1/2)级别的算法,所以很快,即使是最悲观的int.MaxValue,在本人的本机计算也可达到125ms的运行时间。
2,判断素数的优化算法(A-2)
虽然这种算法速度比较快,但如果频繁使用A-1算法,累计起来开销就比较大了,假设有N次访问的话,算法级别就到了O(N3/2)。
因此,本人的解决方案是先计算出一定范围内的素数列表存放在哈希表中,多次调用就可以忽略查询时间了。
/// summary
/// 素数的Hash表
/// /summary
private static HashSetint Primes { get; set; }
/// summary
/// 算法A-2,判断素数
/// /summary
/// param name=number待测正整数/param
/// returns是否为素数(为了简化,1以下的整数皆为素数)/returns
public static bool IsPrime2(int number)
{
// 为了简化,1以下的整数皆为素数
if (number = 2)
{
return true;
}
return Primes.Contains(number);
}
这种算法的前提是要求一个素数表,这就是算法B要研究的问题了。
3 求素数列表的简单算法(B-1)
/// summary
您可能关注的文档
- 上海市上海中学2018年高三二模汇编-排列组合二项式定理概率统计.docx
- 2019-2020同步人教英语新课标选修七课时分层作业13 Section+Ⅰ+Word版含解析.doc
- 2019秋浙教版七年级数学上册习题课件:6.5 角和角的度量 .ppt
- 衡水中学成功秘诀.docx
- 人教版八上道德和法治4.2 以礼待人25课件.pptx
- 牛津上海英语八年级上册 Unit4 Task .ppt
- 安徽蚌埠龙湖中学2019-2020年高一上学期第一二章月考试卷(无答案).doc
- 北师大五年级数学上册第三单元课件.pptx
- 人教版七年级上册地理单元考试试卷:第三章 天气和气候.doc
- 人教版九年级物理全册随堂练习题:13.3比热容.doc
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 2025年植物源新农药百部碱行业深度研究报告.docx
- 2025年高考英语北京卷真题(解析版).doc VIP
- 高考数学考点与题型全归纳.docx VIP
- (高清版)-B-T 30146-2023 安全与韧性 业务连续性管理体系 要求.pdf VIP
- 高考数学考点题型全归纳.pdf VIP
- 2026年度黑龙江省交通运输厅所属事业单位公开招聘工作人员86人备考题库带答案详解(完整版).docx
- 2026年01月20日路易达孚(青岛)粮油食路易达孚食品科技产业中心青岛董家口一期项目董家口港区港润大道以东、纬十四路以北.pdf VIP
- 【高中物理】题型全总结(16专题),详细总结与归类!.pdf VIP
- 安徽师大附中2026届高二化学第一学期期末综合测试试题含答案.doc
- 化学元素读音及顺口溜大全.doc VIP
原创力文档

文档评论(0)