质数是数学重要的一环,所谓质数,就是除了1和它本身外不存在任何因子的数。以下整理了一下c语言中质数的求法。

问题:输入一个正整数n(n>=2),求不大于n的全部质数

方法一:循环法

思路:判断一个数n是不是质数,可以用2到√n之间的所有整数去除n,如果都不能整除,那么n是质数。设计循环嵌套时尽量跳过一些不必要的情况。

1."2"为必输出的质数,可以单独输出。这样循环可从3到√n判断。

2.为什么只需要判断到√n的数呢?

因为n=√n*√n,n的因数除了√n,其他都是成对存在的,且必定一个大于√n一个小于√n,假设n不是质数,有个因数大于√n(不是n本身),则n必定有一个与之对应的小于√n的因数。

3.除了2以外,不存在是偶数的质数,所以在设计循环时可以设置步数step为2。

代码:

#include<stdio.h>
int main()
{int m,n;scanf("%d",&n);printf("2\n");for(int i=3;i<=n;i+=2){for(m=3;m<i;m+=2){if(i%m==0 || m*m>i)break;}if(m*m>i)printf("%d\n",i);}return 0;
}

输入:100

运行结果:

方法二:筛法(空间换时间)

思路:把2到n中的所有数都列出来,然后从2开始,先筛去n内所有2的倍数,然后每次从下一个剩下的数(必然为质数)开始,筛去其n内所有的倍数,最后剩下的数都是质数。

1.设置一个数组a[],a[i]的值为1表示i为质数,将所有元素初始化为1

2.筛去m的倍数,即把a[2*m]、a[3*m]…置为0

3.输出a[i]值为1的i。

代码:

 1 #include<stdio.h>
 2 #define MAX 100
 3 int s;
 4 int a[MAX];
 5 void prime()
 6 {
 7     s=1;
 8     for(int i=0;i<=MAX;i++)
 9         a[i]=1;
10     a[0]=a[1]=0;
11     for(int i=2;i<=MAX;i++)
12     {
13         if(a[i])
14             a[s++]=i;
15         for(int j=i*2;j<=MAX;j+=i)
16             a[j]=0;
17     }
18 }
19 int main()
20 {
21     prime();
22     for(int i=1;i<s;i++)
23         printf("%d\n",a[i]);
24     return 0;
25 }

MAX设置值:100

运行结果:

可以看出,两种方法都成功得到了结果。

求质数(素数)的方法相关推荐

  1. MySQL素数怎么,求质数(素数)的方法

    质数是数学重要的一环,所谓质数,就是除了1和它本身外不存在任何因子的数.以下整理了一下c语言中质数的求法. 问题:输入一个正整数n(n>=2),求不大于n的全部质数 方法一:循环法 思路:判断一 ...

  2. python实现求质数(素数)

    python实现求质数(素数) 素数(质数):我们把公约数只有1和它本身的数字称为素数又称为质数,具体使用python的求法如下: num = [] # 定义一个空列表用来接收找到的符合条件的数字 f ...

  3. Java 洛谷 求质数(素数)、合数、因数、最大公约数、最小公倍数

    什么是因数? "因数是指整数a除以整数b(b≠0) 的商正好是整数而没有余数,我们就说b是a的因数.而小学数学定义 :假如a*b=c(a.b.c都是整数),那么我们称a和b就是c的因数.&q ...

  4. java中求质数(素数)的问题

    1.什么是质数? 定义:质数又称为素数,一个大于1的自然数,除了1和它自身之外,不能被其他任何自然数整除的数叫质数. 2.请输出1~100之间的所有的质数? 3.思路: <1>外层循环作为 ...

  5. 求质数(Prime Number 素数)的方法——厄拉多塞筛法

    质数又称素数.指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数.换句话说,只有两个正因数(1和自己)的自然数即为素数.比1大但不是素数的数称为合数.1和0既非素数也非合数.合数 ...

  6. 求素数(质数)的方法(求100以内的素数及判断该数是否为素数)

    "素数,也是质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数." 求素数的方法: (1)从2~x-1测试是否可以整除 (2)去掉偶数之后,从3~x-1,每次加2 ...

  7. 求素数(质数)的方法

    这里记录一下自己每日学习算法的一个小笔记. 19-9-16 求素数的方法说明: 实际上是用暴力枚举法去计算该数是否可以被整除,但在这过程中也是有减少时间复杂度的方法的.比如若X为非质数,则存在一个Y1 ...

  8. python求素数积_python求质数的3种方法

    本文为大家分享了多种方法求质数python实现代码,供大家参考,具体内容如下 题目要求是求所有小于n的质数的个数. 求质数方法1: 穷举法: 根据定义循环判断该数除以比他小的每个自然数(大于1),如果 ...

  9. python找素数-python求质数的3种方法

    本文为大家分享了多种方法求质数python实现代码,供大家参考,具体内容如下 题目要求是求所有小于n的质数的个数. 求质数方法1: 穷举法: 根据定义循环判断该数除以比他小的每个自然数(大于1),如果 ...

最新文章

  1. TSNE-原理与实现
  2. 设c语言中 一个int型数据库,最新真实全国二级C选择题真题第1套
  3. Serverless 实战 —— Funcraft + OSS + ROS 进行 CI/CD
  4. 第 3 章 共享程序集和强命名程序集
  5. TextView 显示图像+文字的方法
  6. Unity3D游戏开发之仿仙剑奇侠传一2D游戏 (一)
  7. WMI-Win32_BIOS 参数说明
  8. 汽车类自媒体怎么找素材?这几个办法很好用
  9. unity 移动设备查看监控视频
  10. numpy tolist()的用法
  11. 101107 ~101113
  12. Leco题目:两数之和
  13. THUCNews新闻文本分类-tfidf+sklearn
  14. 支付宝吱口令自动复制脚本,自动复制 JavaScript 代码介绍
  15. Android 蓝牙 单独打开和关闭BLE - 详解
  16. 5g网络模式是以什么划分的_5G基础知识及试题
  17. 如何查看mysql数据库名字和密码_如何查看mysql数据库的登录名和密码
  18. 黑洞成像背后的算法 | 图像处理与反问题
  19. html网页添加友链,网站内链、外链、友链操作方法
  20. 阿里云Windows 激活不成功

热门文章

  1. 用正则表达式将字符串中的下划线小写转换成大写
  2. 2019双11猫晚直播技术详解(附演讲PDF)
  3. 仿抖音写上下滑动切换视频
  4. 织梦Dedecms主要文件夹目录及模板文件说明
  5. [Unity Shader] 水纹着色器 Water Shader
  6. 心理美容,女性最好的化妆品
  7. html设计应用程序,软件工程师-20个HTML5应用程序设计示例(10页)-原创力文档
  8. 访问Daytime服务的客户端(TCP)
  9. 【C4D】整体缩放模型
  10. markdown的各种操作