用c语言找出第123个素数,在C语言中查找第N个素数
OP的方法消耗大量时间,因为它不利用不需要确定余数,如果i不是素数。
for (i=2; i*i<=number; i++) {
if (number % i == 0) return 0;
该Sieve_of_Eratosthenes可能会更快,但是从OP的代码是一个戏剧性的变化。
怀疑这个代码对于OP来说仍然太慢。
以下仅通过尝试对先前找到的素数进行测试来调整OP的代码。它也使用pcandidate/plist[index]作为终止条件的一部分。一旦计算出pcandidate % plist[index],经过优化的编译器通常可以以很小的成本提供这个功能。
bool prime_test(const unsigned long *plist, unsigned long long pcandidate) {
if (pcandidate <= 2) return pcandidate == 2;
for (size_t index = 0; ; index++) {
unsigned long long remainder = pcandidate % plist[index];
if (remainder == 0) return false;
unsigned long long quotient = pcandidate/plist[index];
if (quotient < plist[index]) return true;
}
assert(0);
return true;
}
unsigned long long prime_nth(size_t n) {
unsigned long plist[n+1];
plist[0] = 2;
unsigned long long pcandidate = plist[0];
for (size_t index = 0; index <= n; index++) {
while (!prime_test(plist, pcandidate)) pcandidate++;
plist[index] = (unsigned long) pcandidate;
pcandidate++;
}
return plist[n];
}
一个经典的简化只涉及在奇数中寻找新的素数。将所有数学变为unsigned。留给OP。
用c语言找出第123个素数,在C语言中查找第N个素数相关推荐
- 用vb脚本语言找出c盘所有文件及其子文件中后缀名为.txt的文档,2012年3月计算机二级VB练习题及答案:文件...
一. 单选题 1.关于顺序文件的描述,下面正确的是 ________. A) 每条记录的长度必须相同 B) 可通过编程对文件中的某条记录方便地修改 C) 数据只能以ASCII码形式存放在文件中,所以可 ...
- python找出第二大值,Python程序在Dictionary中查找第二个最大值
在本文中,我们将学习下面给出的问题陈述的解决方案. 问题陈述-我们给了两个整数,我们需要在字典中打印第二个最大值 现在让我们观察一下下面的实现中的概念- 方法1:sorted()通过负索引使用函数 示 ...
- C语言找出两个字符串唯一不同的一个字符(附完整源码)
C语言找出两个字符串唯一不同的一个字符 C语言找出两个字符串唯一不同的一个字符完整源码(定义,实现,main函数测试) C语言找出两个字符串唯一不同的一个字符完整源码(定义,实现,main函数测试) ...
- C语言——找出矩阵最大值
C语言--找出矩阵最大值 问题描述: 代码: # include <stdio.h>int main() {int a[3][4];int i, j;int maxi = 0;int ma ...
- C语言找出数组中最小的数和它的下标
C语言找出数组中最小的数和它的下标,然后把它和数组中最前面的元素对换位置 #include <stdio.h> int main() {int A[10]={3,7,5,9,10,2,1, ...
- c语言找出一个数组中出现次数最多的那个元素,c语言找出数组中出现次数最多地那个元素...
matlab中如何找出不同维度矩阵出现次数最多的数组并记录其个数 首先是胞矩阵中的序列问题,不妨假设AA{1}是一个多行两列的数据,AA{2}同例.程序如下clcclearallAA{1}=[12;2 ...
- C语言找出4个最大和4个最小数,济南大学C语言程序设计教案:C语言实验课程第四课.doc...
济南大学C语言程序设计教案:C语言实验课程第四课 C语言实验课程第四课 实验一 数组与函数.数组与指针 一.实验目的 1 掌握数组名作为函数参数的含义.使用方法. 2 掌握多维数组作为函数参数的使用方 ...
- c语言找出成绩的最大,C语言 求每个学生、每门课的平均成绩并找出最大值
C语言 求每个学生.每门课的平均成绩并找出最大值 for(i=0;i { y=0; for(j=0;j { y=y+a[j][i]; } c[i]=y/3; printf("第%d门课的平均 ...
- 找出m到n水仙花数c语言程序设计,《C语言课程设计输出水仙花数》.doc
<C语言课程设计输出水仙花数> C语言程序设计课程设计 评语: 考勤(10)纪律(10)过程(40)设计报告(30)答辩(10)总成绩(100) 专 业: 班 级: 姓 名: 学 号: 指 ...
最新文章
- 一个丧心病狂的Github项目:东北话编程,大写的服!
- C#模拟网站登录介绍
- java 发送 接受 xml请求
- cad钣金展开插件_钣金折弯展开的计算方法汇总
- 【Flink】The Kryo Output still contains data from a previous serialize call. It has to be flushed or
- Java编程风格与命名规范整理(转载)
- VC维(Vapnik–Chervonenkis dimension)
- ZYNQ 系统的IEEE1588 实现方法
- hightopo|海上作业平台的三维可视化场景
- 北京大学计算机语言学,基于认知的汉语计算语言学研究_袁毓林pdf
- 如何查看虚拟机服务器ftp,如何通过FTP工具查看虚拟空间使用了多少?
- Android Studio 使用技巧
- python pack是什么意思_Python中pack和unpack用法介绍
- oa办公系统文件存取错误_如何处理OA系统在线阅读或编辑文档时提示“文件存取错误”的问题...
- phpems 修改模板_phpems二次开发手册
- 黄仁勋没有回应,英伟达没有新品
- Online Patching
- CC3200学习总结
- oracle 创建唯一索引
- java集合类深度解析
热门文章
- 非常经典的正则表达式
- A Bug's Life(向量偏移)
- mysql处理字符串的两个绝招:substring_index,concat
- 自制奇葩vb面试题,看你能对几道
- C#仿QQ皮肤-主窗体MainForm和Main的实现
- svn更新路径,解决办法详细步骤,eclipse里面的更新方法,svn废弃位置,Windows环境,svn服务器地址换了,如何更新本地工作目录
- VS2010 自定义用户控件未出现在工具箱的解决方案
- redis 数据库主从不一致问题解决方案
- Java中为什么需要反射?反射要解决什么问题?
- 解决异方差问题--加权最小二乘法