最近在重新学习C语言,因为以前学的东西太少太少,像指针使用什么的都不熟悉。所以决定买本书好好看看。在边看书边实践的过程中有一个很经典的问题需要解决。

就是怎么判断一个读入的整数是否是素数,如果不是并打印其约数。

当然,对我来说还是很简单的。很快的就解决了,所以分享一下自己的理解吧,希望大家能或多或少的有点收获。

首先,什么是素数(质数)?

数学的概念中,素数就是只能被1和它本身所整除的整数。但是有一个例外,就是1不属于素数。所以你在输入一个整数并加以判断的时候就需要考虑这种情况了。如下即可:

while(scanf("%lu", &num) == 1 && num != 1)

这里用到了while循环来判断输入的数值并加以判断,如果输入格式正确的话会返回一个1并将输入的数值存入num这个变量中,然后再判断num的值是否为1。

在这里有一条很好用的规则用于素数的判断:测试的数只需要界于2到num的平方根之间的所有数,看它们是否可以整除num。如果可以整除,说明输入的数不是素数;反之,说明输入的数是素数。

到这里,就会有人说平方根怎么求,其实这个很好解决。你完全可以像下面这样描述判断条件:

for(div = 2; (div * div) <= num;div++){

if(num % div == 0){

if((div * div) != num){

printf("%lu is divisible by %lu and %lu.\n", num, div, num / div);

}else {

printf("%lu is divisible by %lu.\n", num, div);

}

}

}

在这里,在if条件语句里面还嵌套了一个if条件语句,用来判断两个约数是否是一样的,比如144,约数是12和12,这时候就只需要打印一个约数即可。

第二,我们怎样知道一个数数素数呢?

如果num是素数,程序流程永远也进不了if语句中。为了解决这个问题,可以在循环外设置一个变量为某一值,比方说1,在if语句中将这个变量重设为0。那么,循环完成后,可以检查该变量是否仍然是1。如果是,则从没进入过if语句,这个数是素数。我这里用int类型的变量isPrime来当作一个标志实现这个想法。

好了,结合上面的所有想法,我们开始写代码了:

#include

int main(void)

{

unsigned long num;// 要检查的数

unsigned long div;// 可能的约数

int isPrime;// 素数的标志,1代表是素数,0代表不是素数

printf("Please enter an integer for analysis. ");

printf("Enter q to quit.\n");

while(scanf("%lu", &num) == 1 && num != 1)

{

for(div = 2, isPrime = 1;(div * div) <= num; div++){

if(num % div == 0){// 如果能被div整除

if((div * div) != num){// 约数不相等

printf("%lu is divisible by %lu and %lu.\n", num, div, num / div);

}else{// 约数相同

printf("%lu is divisible by %lu.\n", num, div);

}

// 将isPrime设置为0,表示其不是一个素数

isPrime = 0;

}

}

if(isPrime == 1){

printf("%lu 是素数.\n", num);

}

printf("Please enter another integer for analysis. ");

printf("Enter q to quit.\n");

}

printf("Bye.\n");

return 0;

}

这里有一个关键就是,在for循环控制表达式中使用了逗号运算符,以针对每个新输入的数将isPrime初始化为1。

下面演示一些输入的示例:

好了,运行后的结果都是正确的,大家也可以自己试试看。

每天进步一点点!加油!

C语言程序判断一个数是否是素数,C语言中怎么判断一个数是否是素数(即质数)...相关推荐

  1. 可运行的C语言程序的拓展名,可运行的c语言程序的扩展名为什么?

    可运行的c语言程序的扩展名为".exe".c语言程序经过"编译程序"编译之后,生成一个后缀为".obj"的二进制文件:然后由"连接 ...

  2. c语言程序与设计教学设计,浅谈C语言程序设计课程的教学设计

    C语言程序设计课程是一门计算机专业程序设计语言类的基础课程,如何将枯燥复杂的语法.单调抽象的函数让学生们有兴趣学习.研究.文章通过在C语言程序设计这门课教学的设计,浅谈了自己的见解和方法. 大多数计算 ...

  3. c语言程序设教材计 乌云高娃,C语言程序设计教学课件作者第3版乌云高娃演示文稿C语言程序设计教学课件作者第3版乌云高娃演示文稿演示文稿第1章C语言程序设计基础课件.ppt...

    C语言程序设计教学课件作者第3版乌云高娃演示文稿C语言程序设计教学课件作者第3版乌云高娃演示文稿演示文稿第1章C语言程序设计基础课件.ppt 主要内容 课程概述 为什么选择C语言作为入门课程? C语言 ...

  4. C语言试题四十三之求出ss所指字符串中指定字符的个数,并返回此值。

    1. 题目 请编写一个函数function,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中C程序设计科目. ...

  5. 200个c语言程序(由简单到复杂),200个c语言程序(由简单到复杂)

    200个C语言程序(由简单到复杂)从简单到难的200来个经典C程序csdn上的不过那里要资源分,自己下了下来,放到论坛里.有需要的童鞋可以下载学习学习.第一部分 基础篇 001 第一个C程序 002 ...

  6. c语言程序主要的结构特点是什么,1. C语言的结构特点?

    C语言程序结构的特点是顺序结构.选择结构.循环结构. 1.顺序结构,默认的流程结构,按照书写顺序执行每一条语句. 2.选择结构,对给定的条件进行判断,再根据判断结果来决定执行那一段代码. 3.循环结构 ...

  7. c语言程序设计基础课后习题答案,2011级C语言程序设计基础教程课后习题答案

    1.C 语言课后习题习题答案详解(11 级教材)第 1 章1.1 填空题1.1.1 应用程序 ONEFUNC.C 中只有一个函数,这个函数的名称是 _main .1.1.2 一个函数由_函数头 _和_ ...

  8. 通常我们将python语言程序保存在一个后缀_【单选题】通常我们将Python语言程序保存在一个后缀为( )的文件中。...

    问题:[单选题]通常我们将Python语言程序保存在一个后缀为( )的文件中. 更多相关问题 谢某对某公安局以其实施盗窃为由处以15日拘留的处罚不服,向法院提起行政诉讼.该局向法院提供的证 下列关于刑 ...

  9. c语言程序处理数据的基本步骤是,c语言程序教程.doc

    c语言程序教程 c语言程序教程 本文由tyr1235831贡献 ppt文档可能在WAP端浏览体验不佳.建议您优先选择TXT,或下载源文件到本机查看. C语言程序设计 语言程序设计 2008版 版 1 ...

  10. 每个c语言程序写完后 都要按照,c语言基础学习小结(习题总结)(5页)-原创力文档...

    书山有路勤为径 学海无涯苦作舟 一.思考题. 1.你如何向别人解释清楚什么是编程.什么是计算机语言? 2.什么是C语言? 二.解答题. 1.用C语言编写程序:求任意两个整数的和.如果是小数的话,要求输 ...

最新文章

  1. Android 中文API (91) —— GestureDetector
  2. Android Studio MAT内存分析初探
  3. JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记3
  4. 你绝对想不到R文件找不到(cannot resolve symbol R)的原因
  5. Code Issues 2,637 Pull requests 0 Projects 1 Wiki Security Insights Settings 使用filter node快速找到XML f
  6. 监听listview item兼容于checkbox/textview/imageview
  7. 【多图长文】古希腊式、巴洛克式、哥特式.....图说西方建筑简史
  8. 查询宇宙生命的家谱--TaxonKit工具详解
  9. 域名是什么?怎样注册一个域名?
  10. python 兼职多少钱一小时_无印良品兼职一小时多少钱?看完后就清楚了!
  11. 使用POI和EasyExcel实现Excel导入和导出功能
  12. 最全最详细的PHP面试题(带有答案)
  13. 仿qq email界面 登陆
  14. No such file or directory(没有那个文件或目录)的小问题
  15. 应用系统运维建设必备的几个方面
  16. wincc 用c语言读取用户名,WINCC中使用C脚本获得操作记录_wincc脚本读取报警记录-C文档类资源...
  17. 微信小程序 轮播图代码
  18. win7打开计算机一片空白,win7系统“打开或关闭windows功能”显示一片空白如何解决...
  19. 【产品经理】产品体验报告的思路
  20. openstack 命令行管理十八 - instance管理 (备忘)

热门文章

  1. PS 图片背景变为透明
  2. mysql当前时间的本月_mysql 获得当前月1号的日期 和 0点日期方法
  3. 2018年迎春杯复赛入围名单(四年级)
  4. c语言while循环作用,c语言中while循环的用法
  5. 使用python判断素数
  6. 优家益购——JavaWeb项目(Jsp+Servlet+MySQL+tomcat)
  7. 魏俊妮《非人力资源的人力资源管理技术提升》课程大纲
  8. gh-ost 参数解析,看这一篇就够了!
  9. wps 安装字体手册
  10. 新昌中学2021高考成绩查询,新昌中学教育集团向2020年参加高考被第一批录取的553名学子表示热烈祝贺...