记录一下我知道的找素数的方法,这里就拿生成1-100的素数表作例子来展示。

方法
试除法
试除开平方法
辗转相除法
更相相减法
埃式筛选法

试除法

试除法就是把每一个数都拿它之前的所有数来除一遍,如果出现余数为0,则证明不是素数。
例如:要验证99是否为素数,就拿1-98来给99除。当除到3时发现余数是0,所以99不是素数

void FindPrime()
{int i = 0; int j = 0;for (i = 1; i <= 100; i++)//这里可以直接+=2,因为偶数不可能是素数{for ( j = 2; j <= i; j++){if (i % j == 0)//如果余数为0,则不是素数,结束循环break;}if(i==j)//如果j一直加到和i相等,证明i是素数printf("%d ", i);}
}
int main()
{FindPrime();
}

试除开平方法

一个非素数可以拆成两个数相乘,这两个数的其中一个一定小于等于这个非素数的开平方
例如:20可以拆成4×5,4是小于等于根号20的。
如果出现了这两个数有其中一个大于该数的开平方,证明该数是素数
例如:19只能拆成1和19,19是大于根号19的。
减少了循环的次数,比试除法好一点。

void FindPrime()
{int i = 0; int j = 0;for (i = 1; i <= 100; i++)//这里可以直接+=2,因为偶数不可能是素数{for ( j = 2; j <= sqrt(i); j++)//判断在根号i之前是否有可以除整的数,有就不是素数{if (i % j == 0)//如果余数为0,则不是素数,结束循环break;}if(j>sqrt(i)&&i!=1)//sqrt返回的是double类型,i如果是素数,j一定会比sqrt(i)大printf("%d ", i);}
}
int main()
{FindPrime();
}

埃式筛选

埃式筛选是一种算素数的方法
举个例子来理解:2是素数,现在就要把2的倍数全部排除在外,则4,6,8…,100都被排除了。3也是素数,则6,9,12,…99被排除了,最后把没有被排除的数打印出来即可。
埃式筛选要用到bool类型,如果是素数就赋值1,不是就赋值0.由于原生C语言没有bool类型(C99引入了),我这里就用数组来做。

int main()
{int prime[1000] = { 0 };for (int i = 0; i < 1000; i++){prime[i] = 1;//假设全部数都是素数,全部赋值为1}for (int i = 2; i < 1000; i++)//第一个素数2开始筛选{if (prime[i - 1])//如果是素数就筛选,不是就没有意义了{for (int j = 2; i * j <= 1000; j++)//把2的倍数都筛选掉{prime[i * j - 1] = 0;//赋值为0,则不是素数了}}}for (int i = 0; i < 1000; i++){if(prime[i]==1)//打印剩余没有被筛选的数printf("%d ",i+1);}return 0;
}

有不对的地方请指正。谢谢啦

C语言找素数的几种方法相关推荐

  1. C语言判断素数的两种方法

    C语言判断素数的两种方法 素数又称质数.所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除. 思路1):因此判断一个整数m是否是素数, ...

  2. C语言——判断素数的几种方法以及相关题目

    目录 一,什么是素数 二,如何判断一个自然数为素数 三,相关题目 四, 总结 一,什么是素数 素数又称质数,是指在大于1的自然数中,因数仅有1和它本身的自然数 二,如何判断一个自然数为素数 思路一,由 ...

  3. java语言中如何表示素数,使用Java语言求素数的几个方法

    使用Java语言求素数的几个方法 今天找了一篇"面试50题"的文档,第一题是求fibonacci数列,使用递归很容易就实现了,没什么难度. 第二题是输出101~200之间的素数,没 ...

  4. C语言求最大公约数三种方法详解

    C语言求最大公约数三种方法详解 题目要求 常用写法(穷举法) 辗转相减法 辗转相除法 main函数 整体代码 题目要求 运行最大公约数的常用算法,并进行程序的调式与测试. 常用写法(穷举法) 从两个数 ...

  5. 第二十二章:求解素数的N种方法

    求解素数的N种方法 一.质数和合数 质数: 质数又称**素数**.指在一个大于 1的自然数中,除了 1和此整数自身外,不能被其他自然数整除的数.换句话说,只有两个正因数(1和自己)的自然数即为质数. ...

  6. 求素数的几种方法(通俗易懂)

    博主简单的写下这篇文章,主要为了更好地复习和理解,希望对各位有帮助. 素数:指一个只能被1和它本身整除的数. 青铜级别求素数:枚举范围内的每个数在2到本身的范围中是否有被整除的数.没有就是素数,有就不 ...

  7. C语言求最大公约数3种方法

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105163610 C ...

  8. C语言执行shellcode的五种方法

    //C语言执行shellcode的五种方法 #include <windows.h> #include <stdio.h> //data段可读写 #pragma comment ...

  9. c语言调用linux脚本,C语言执行shellcode的五种方法

    //C语言执行shellcode的五种方法 #include #include //data段可读写 #pragma comment(linker, "/section:.data,RWE& ...

  10. python脚本判断一个数是否为素数的几种方法

    质数又称素数.指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数.素数在数论中有着很重要的地位.比1大但不是素数的数称为合数.1和0既非素数也非合数.质数是与合数相对立的两个概念 ...

最新文章

  1. 2021下半年,我只想用Python搞钱!
  2. python语言下载-python下载_python免费下载[编程工具]-下载之家
  3. Java堆溢出,虚拟机栈和本地方法栈溢出
  4. windows批处理执行多条命令
  5. java中的volatile变量
  6. 电商数据之战背后利益纠葛:触动最敏感神经
  7. 【DL小结1】DL入门
  8. PS2021下载Photoshop2021下载安装详细步骤
  9. 家庭用计算机音响,7.1声道THX家庭影院音箱摆位计算器
  10. 得力针式打印机第一联清晰第二联不清晰解决办法
  11. MacOS获取辅助功能权限控制鼠标点击事件
  12. 华为云服务器查看备份文件,云服务器备份查看备份
  13. 清理win7系统盘空间
  14. for循环和range函数
  15. P9-Windows与网络基础-Windows基本命令-文本操作(type、findstr)
  16. ubuntu qt creator编译出现:-1: error: Warning: File ' has modification time 3.8e+04 s in the future
  17. PKI-CA数字证书验证过程
  18. presto时间转换、时间加减、时间差
  19. php函数echo,PHP echo()函数讲解
  20. idea 公共方法抽取快捷键

热门文章

  1. ITIL 4讲解: 变更管理
  2. android微信代码大全,微信满屏表情代码大全复制
  3. 智能手机的硬件组成部分及结构图
  4. android开机动画多长时间_Android开机动画及黑屏
  5. 编程语言之父6大经典名言,C语言之父这一段代码你见过吗?
  6. 破解各种加密软件的方法
  7. python小程序 --指法练习
  8. Unity3d 代码修改并恢复鼠标的图标
  9. 《数据挖掘概念与技术》第三版 范明 孟小峰译 课后习题答案(二)
  10. 电脑C盘软件搬家,一键解决C盘不够用问题!