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个素数相关推荐

  1. 用vb脚本语言找出c盘所有文件及其子文件中后缀名为.txt的文档,2012年3月计算机二级VB练习题及答案:文件...

    一. 单选题 1.关于顺序文件的描述,下面正确的是 ________. A) 每条记录的长度必须相同 B) 可通过编程对文件中的某条记录方便地修改 C) 数据只能以ASCII码形式存放在文件中,所以可 ...

  2. python找出第二大值,Python程序在Dictionary中查找第二个最大值

    在本文中,我们将学习下面给出的问题陈述的解决方案. 问题陈述-我们给了两个整数,我们需要在字典中打印第二个最大值 现在让我们观察一下下面的实现中的概念- 方法1:sorted()通过负索引使用函数 示 ...

  3. C语言找出两个字符串唯一不同的一个字符(附完整源码)

    C语言找出两个字符串唯一不同的一个字符 C语言找出两个字符串唯一不同的一个字符完整源码(定义,实现,main函数测试) C语言找出两个字符串唯一不同的一个字符完整源码(定义,实现,main函数测试) ...

  4. C语言——找出矩阵最大值

    C语言--找出矩阵最大值 问题描述: 代码: # include <stdio.h>int main() {int a[3][4];int i, j;int maxi = 0;int ma ...

  5. C语言找出数组中最小的数和它的下标

    C语言找出数组中最小的数和它的下标,然后把它和数组中最前面的元素对换位置 #include <stdio.h> int main() {int A[10]={3,7,5,9,10,2,1, ...

  6. c语言找出一个数组中出现次数最多的那个元素,c语言找出数组中出现次数最多地那个元素...

    matlab中如何找出不同维度矩阵出现次数最多的数组并记录其个数 首先是胞矩阵中的序列问题,不妨假设AA{1}是一个多行两列的数据,AA{2}同例.程序如下clcclearallAA{1}=[12;2 ...

  7. C语言找出4个最大和4个最小数,济南大学C语言程序设计教案:C语言实验课程第四课.doc...

    济南大学C语言程序设计教案:C语言实验课程第四课 C语言实验课程第四课 实验一 数组与函数.数组与指针 一.实验目的 1 掌握数组名作为函数参数的含义.使用方法. 2 掌握多维数组作为函数参数的使用方 ...

  8. c语言找出成绩的最大,C语言 求每个学生、每门课的平均成绩并找出最大值

    C语言 求每个学生.每门课的平均成绩并找出最大值 for(i=0;i { y=0; for(j=0;j { y=y+a[j][i]; } c[i]=y/3; printf("第%d门课的平均 ...

  9. 找出m到n水仙花数c语言程序设计,《C语言课程设计输出水仙花数》.doc

    <C语言课程设计输出水仙花数> C语言程序设计课程设计 评语: 考勤(10)纪律(10)过程(40)设计报告(30)答辩(10)总成绩(100) 专 业: 班 级: 姓 名: 学 号: 指 ...

最新文章

  1. 一个丧心病狂的Github项目:东北话编程,大写的服!
  2. C#模拟网站登录介绍
  3. java 发送 接受 xml请求
  4. cad钣金展开插件_钣金折弯展开的计算方法汇总
  5. 【Flink】The Kryo Output still contains data from a previous serialize call. It has to be flushed or
  6. Java编程风格与命名规范整理(转载)
  7. VC维(Vapnik–Chervonenkis dimension)
  8. ZYNQ 系统的IEEE1588 实现方法
  9. hightopo|海上作业平台的三维可视化场景
  10. 北京大学计算机语言学,基于认知的汉语计算语言学研究_袁毓林pdf
  11. 如何查看虚拟机服务器ftp,如何通过FTP工具查看虚拟空间使用了多少?
  12. Android Studio 使用技巧
  13. python pack是什么意思_Python中pack和unpack用法介绍
  14. oa办公系统文件存取错误_如何处理OA系统在线阅读或编辑文档时提示“文件存取错误”的问题...
  15. phpems 修改模板_phpems二次开发手册
  16. 黄仁勋没有回应,英伟达没有新品
  17. Online Patching
  18. CC3200学习总结
  19. oracle 创建唯一索引
  20. java集合类深度解析

热门文章

  1. 非常经典的正则表达式
  2. A Bug's Life(向量偏移)
  3. mysql处理字符串的两个绝招:substring_index,concat
  4. 自制奇葩vb面试题,看你能对几道
  5. C#仿QQ皮肤-主窗体MainForm和Main的实现
  6. svn更新路径,解决办法详细步骤,eclipse里面的更新方法,svn废弃位置,Windows环境,svn服务器地址换了,如何更新本地工作目录
  7. VS2010 自定义用户控件未出现在工具箱的解决方案
  8. redis 数据库主从不一致问题解决方案
  9. Java中为什么需要反射?反射要解决什么问题?
  10. 解决异方差问题--加权最小二乘法