1,判断n是否能被2~n-1整除

输入的数n不能被2-(n-1)整除,说明是素数

输入的数n能被2-(n-1)整除,说明不是素数

注意:1不是素数,素数是指大于1的自然数,除了1和该数自身外,无法被其他自然数整除的数。

法一:

#include<stdio.h>
int main()
{int i, n;printf("please input a number:"); scanf("%d", &n);for (i = 2; i < n ; i++){if (n%i == 0)break;}if (n <=1 ) printf("This is not a prime\n");else  if (i < n) printf("This is not a prime.\n"); else printf("This is a prime.\n");return 0;}

法二:

#include<stdio.h>
int main()
{int i, n;printf("please input a number:"); scanf("%d", &n);if(n<=1)printf("This is not  a prime\n");else{for (i = 2; i < n ; i++){if (n%i == 0)break;}if(i>=n)printf("This is a prime\n");elseprintf("This is not a prime\n");}return 0;
}

2,判断n是否能被2~√n间的整数整除

输入的数n不能被2-√n整除,说明是素数

输入的数n能被2-√n整除,说明不是素数

#include<stdio.h>
#include<math.h>
int main()
{int n,i;double k;printf("please input a number:"); scanf("%d", &n);k = sqrt(n);for (i = 2; i <= k;i++){if (n%i == 0) break;}if (n <=1 ) printf("This is not a prime\n");else if (i <= k) printf("This is not a prime.\n");else printf("This is a prime\n");return 0;}

法二:

#include<stdio.h>
#include<math.h>
int main()
{int n,i,k;printf("please input a number:"); scanf("%d", &n);if(n<=1)printf("This is not  a prime\n");else{k=sqrt(n);for (i=2;i<=k;i++){if (n%i==0)break;}if(i>=k+1) printf("This is a prime.\n");   else printf("This is not a prime.\n");}return 0;
}

以上两个程序的法二:Modified on April 22, 2019

对于评论出现的问题,在此整理一下

运行软件: VC++ 6.0

weixin_43912791: 这段代码识别不了1啊。。

回答:素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数。所以没考虑1的情况。

weixin_43412408: 能问下i>k的逻辑是什么?想不太明白

第二个方法:对一个数n,如果他能分解成n=pq,那么pq里必然有一个大于等于根号n一个小于等于根号n,也就是说一个合数n必然有一个因子是小于等于根号n的. 所以对一个数n,只要检验他有没有小于等于根号n的因子就可以了(检验小于等于n的因子使循环次数变少,这也是简化的原因)

写这篇文章的初衷是给自己提供一个思路,没有考虑太多的情况,没想到这么多人看,所以重新整理了一下代码。

感谢@ 锦言肾行的分享

素数的定义是只能被1和他本身整除,1不是素数.因此要判断一个数是否为素数.就要判断它能不能被比他小的所有素数整除,这是一个算法.(写到算法时,我只能写出用它除以比他小的所有数,造成运算速度低下)
这里给出的是一个更快速的方法.要判断一个数是否为素数,只要判断比它开根号后的数小的数,能否把它整除.
为什么可以这样做呢.从百度得到的答案如下:
如果一个质数大于根号n,而n可以除尽它,那么n必然也可以除尽一个更小的质数。
例如21,它可以除尽7,而它同样可以除尽3。所以判断21是否质数,只需要判断21是否可以除尽2和3就可以了。5和7和11就不需要判断了。
想来就是这样,例如21.根号21乘根号21等于21.则当一个比根号21的数大的数乘另一个数得到21.另一个数必然小于根号21.
由此可以得到一个法2较快的素数判断算法

C语言求素数的两种方法相关推荐

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

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

  2. Java中求素数的两种方法

    *如何求素数? ** 比1大的整数中,除了1和它本身以外,不再有别的因数,这种整数叫做质数或素数. 所以我们只需要在2~n-1的数中,能找到一个数能整除n,则n为素数. 所以用两个循环遍历就可以得到素 ...

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

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

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

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

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

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

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

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

  7. 用matlab计算稳态误差,利用Matlab求稳态误差的两种方法.

    利用Matlab求稳态误差的两种方法 摘要:稳态误差是系统控制精度或抗扰动能力的一种度量,它是稳态性能的一个重要指标.本文介绍利用Matlab的控制系统工具箱和Simulink工具箱求取系统误差稳态的 ...

  8. c语言 | 求100-200之间的素数(两种方法)

    首先要求100-200之间的素数,要知道素数是什么? 素数就是质数,只能被自身和1整除 下面会介绍两种方法: 常规方法: 代码: int main() {     int i = 0;     for ...

  9. c语言程序π,C语言求圆周率π(三种方法)

    题目1) 利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止. 题目2) 根据公式②,用前100项之积计算π的值. 题目1)提供了一种解法,题目2)提供了两种解法,请看解析. 题目1) ...

  10. c语言求圆周率 . 4,C语言求圆周率π(三种方法)(4页)-原创力文档

    C语言求圆周率π(三种方法) 题目1) 利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止.题目2) 根据公式②,用前100项之积计算π的值.题目1)提供了一种解法,题目2)提供了两种 ...

最新文章

  1. MoviePy - 中文文档4-MoviePy实战案例-把多个clip放置在一个画面中(超美)
  2. hosts和resolv.conf区别
  3. Java 8 CompletableFuture 浅入
  4. MariaDB 10的复制 集群 高可用搭建 大表拆分【持续更新中】
  5. 华硕路由器 linux上不了网,华硕ASUS路由器连不上网怎么办?
  6. HH SaaS电商系统服务商品在移动端下单结算的交互设计
  7. 怎么用c语言写一个贪吃蛇,刚学C语言,想写一个贪吃蛇的代码
  8. python多版本控制操作方法
  9. Unity 之命名规范(一)
  10. 模拟新浪微博自动登陆
  11. 给你一个全自动的屏幕适配方案(基于SW方案)!—— 解放你和UI的双手
  12. 在保护继承中基类的共有成员_鸡啄米:C++编程入门系列之三十八(继承与派生:派生类对基类成员的访问控制之保护继承与私有继承)...
  13. 21天战拖记——Day8:猴子法则and继续复习!(2014-05-11)
  14. 一对一视频聊天app源码,归并排序模板
  15. CAN总线协议报文浅析
  16. 实现财务自由的重要工具
  17. 翻翻git之---溜的飞起的加载效果AVLoadingIndicatorView
  18. 跟你聊聊员工的离职成本,细算下来超级恐怖!
  19. 让人们久等了的TCP BBR v2 0快要出炉了
  20. 跨浏览器和跨平台甘特图dhtmlxGantt,选择它的6个理由!

热门文章

  1. 我转行程序员的那一年(四)
  2. 布料系统原理浅析和在Unity手游中的应用
  3. Python办公自动化(四):PDF处理自动化
  4. QPainter绘图基本使用
  5. FreeCAD开发:修改了源码,需要翻译成中文,如何更新语言包
  6. iOS8 web下载ipa install App via OTA
  7. 阿里巴巴矢量图标如何修改颜色,以及原理
  8. fiddler+雷电模拟器进行APP抓包(可抓HTTPS)
  9. Java系统程序员修炼之道
  10. python下stl格式转换off格式