这是一个C语言 while 循环的示例:判断一个整数 n(n>1)是否为素数(也成质数)。

问题分析

输入:一个整数n(n>1)。

输出:Yes or No。

如果一个整数 n(n>1)不能被 1 或 n 以外的正整数整除,那么 n 就是素数。因此,只要把 2 至 n-1 之间的每一个数字,分别作为除数,与 n 做除法,只要出现一次整除,就说明 n 不是素数;而一直没有出现整除现象,则说明 n 是素数。

一个整数的因子都是成对出现的,如果 x 能被 n 整除,n 是 x 的因子,x/n 同样是 x 的因子,成对的两个因子中(除了 1 和本身),都不会超过 n/2。因此,上面判断是否为素数时,用作除数的 2 至 n-1 之间的数字个数可以减半,用 2 至 n/2 之间的数字作为除数即可。

再进一步,可以把作为除数的数字范围缩小到 2~sqrt(n)(根号 n)。

另外 2 是最小的素数,直接输出“Yes”即可。大于 2 的整数才用上面的方法进行判断处理。

整除判断部分可以用 do-while 循环语句或者 while 循环语句实现,流程图如图 1 所示。

图 1:用 do-while 语句和 while 语句实现整除循环判断的流程图

算法描述和实现

1) 使用 do_while 语句

代码清单 1:使用 do-while 语句判断一个整数 n(n>1)是否为素数

#include

#include

int main( )

{

int n,i;

printf("输入一个大于1的整数:\n");

scanf("%d",&n);

if(n == 2)

printf("Yes\n"); //处理 2 的判断

else //处理 n>2 的判断

{

i = 1;

do

i++;

while(n % i != 0 && i <= sqrt(n)); //循环条件

if(n % i == 0)

printf("No\n"); //出现整除,非素数

else

printf("Yes\n"); //否则,是素数

}

system("pause");

return 0;

}

do-while 语句在判断之前就执行 i++ 一次,所以 i 的初始值为 1。

运行结果为:

输入一个大于1的整数:

97

Yes

2) 使用 while 语句

代码清单 2:使用 while 语句判断一个整数 n(n>1)是否为素数

#include

#include

int main( )

{

int n,i;

printf("输入一个大于1的整数:\n");

scanf("%d",&n);

if(n == 2)

printf("Yes\n"); //处理2的判断

else //处理n>2的判断

{

i = 2;

while(n % i != 0 && i <= sqrt(n)) //循环条件

i++;

if(n % i == 0)

printf("No\n"); //出现整除,非素数

else

printf("Yes\n"); //否则,是素数

}

system("pause");

return 0;

}

运行结果为:

输入一个大于1的整数:

177

No

linux c开多线程算质数,C语言判断素数(质数)相关推荐

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

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

  2. c语言中prime的作用,C语言判断素数prime

    <C语言判断素数prime>由会员分享,可在线阅读,更多相关<C语言判断素数prime(2页珍藏版)>请在人人文库网上搜索. 1.主函数:#include int prime( ...

  3. C语言判断素数(质数)O(sqrt(n))、O(sqrt(n)/2)、O(sqrt(n)/3)【素数分布规律】、口算

    质数是指在大于1的自然数中,除了1和它本身外没有其他因数的自然数. 若所要判断的数对我们给出的可能因数除余结果均不为0,即该数不能被除1和本身外的其他整数整除,则该数为素数. 故本文主要针对所给可能因 ...

  4. C语言判断素数(求素数) 求两个数之间的所有质数

    求素数/质数(采用的sqrt) #include <stdio.h> #include<math.h>//判断一个数是不是素数 int checkPrimeNumber(int ...

  5. c++第n小的质数_形形色色的素数 -- 质数定理

    大家好,我是大老李.这集节目属于补课,因为我们讲了半天质数,还没有讲质数定理,虽然我在节目里已经多次提到质数定理. 那什么是质数定理?它是一系列有关质数数量和分布情况的定理和猜想.其中有一个最主要命题 ...

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

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

  7. 判断素数(质数)高效算法

    最近看到一篇高效的素数判断算法文章,但是文章中有些部分写的还不够完整清晰,所以在此详细记录一下此算法理解过程.(理解此算法前应先明白使用 sqrt(num) 为判断条件判断素数的方法) 此算法产生的原 ...

  8. C语言判断素数方法之试除法

    素数又称质数,指的是一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数,如2,3,5,7,11,13,17-.接下来让我们以打印区间[a,b]内所有素数为目标来探究一种判断素数 ...

  9. 判断素数/质数的快速算法

    质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个因数的数).--via维基百科 朴素算法: 1. def ...

最新文章

  1. 10年,4600万台!树莓派,生日快乐
  2. 揭秘高盛区块链报告:区块链技术在五大领域从理论走向实践 | 附报告下载
  3. linux c size_t ssize_t 简介
  4. java atomicfloat_Java:有没有AtomicFloat或AtomicDouble?
  5. 安天移动安全:Janus高危漏洞深度分析
  6. 类的主动使用与被动使用等
  7. 微信小程序销毁某一注册函数_微信小程序云开发API 删除一条记录
  8. JavaScript之DOM对象(Event事件)
  9. 油价下降,全国人民都高兴
  10. UVA 11478(差分约束 + 二分)
  11. Codejock.Xtreme.Toolkit.Pro.v15.3.1 vs2019可用
  12. java我的世界光影推荐_最棒的7款我的世界光影水反效果包
  13. C语言程序书写中 每行必须有分号,C语言课后习题答案
  14. 房地产大数据管理系统——房地产大数据融合平台
  15. 建立在线社交网络中的关系权重模型
  16. 怎样在Word和LaTeX中打出黑底的圆圈数字?
  17. maya导入abc动画_mayaamp;max文件导出fbx
  18. 2012移动互联网之人在囧途
  19. 移动硬盘插入提示需要格式化RAW_学会自己判断移动硬盘故障!如何在保数据的情况下进行正确处理!...
  20. 安装vue-cli创建项目的时候 gyp ERR! build error的npm包遇到以下错误

热门文章

  1. I/O复用 —— select
  2. CAD——MV视口与图层
  3. ubuntu 16.04/18.04安装TP-LINK TL-WDN5200H无线USB网卡驱动
  4. 医疗器械分销系统开发|分销商是怎么招募的?
  5. linux的层次结构模型,linux 设备模型(1)
  6. pg 快速造1000w测试数据
  7. Vant删除图片Vue版本
  8. win11磁盘分区_win11系统磁盘如何分区
  9. Hacking Tools搜罗大集合
  10. VBA代码为ppt添加页码进度条