什么是质数?

质数就是只能被1和他自己整除的数字

怎么实现这个程序?

使用for循环求出范围内所有数字,嵌套一个for循环求出1到范围内某个数字的平方根的所有数字,再通过求模运算来判断是否能整除,从而来判断是否为质数。

为什么是平方根呢?

  • 第一次代码优化

一个数字的因数里,除了1和自己以外最大的因数一定小于等于自身的一半,换句话讲,一个数字不可能被大于自身一半的数字整除。

36的因数            32的因数
2 18 2 16
3 12 4 8
4 9 8 4
6 6 16 2
9 4
12 3
18 2
  • 第二次代码优化

有了上一次的优化后我们可以尝试列出几个数字的所有因数,例如上图的36和32。不难发现,36的平方根之后的因数9,12,18所对应的4,3,2重复出现了两次,所以没有意义。32的平方根约等于5.66,介于4和8之间,平方根之后的因数也是重复的。所以我们可以得出结论:除重复的因数外,一个数的最大的因数小于等于该数的平方根。

此方法的核心就在于内层for循环是如何结束的,其一:不符合内层循环的判断条件,循环结束;其二:在内层循环的循环体中break提前结束。

代码如下:

#include <stdio.h>
#include <math.h>
int main()
{   //定义count为计数器,后面会用它来记录打印次数int count = 0;//外层循环求出100-500的所有数字for(int i = 100; i <= 500; i++){int j;//内层循环求出2到该数字i的平方根 for(j = 2; j <= sqrt(i); j++){//判断:数字i能否被j整除if(i % j == 0)//如未整除,则继续执行内层循环的表达式“j++”//如果整除,则i为合数,提前结束内层循环,执行外层循环break;}//根据for循环的执行顺序:表达式1->表达式2->循环体->表达式3//循环体中if语句的判断结果若始终为假,将再次返回到表达式3//执行内层循环的表达式“j++”后,该循环的判断条件为假,内层循环结束//判断:j是否大于数字i的平方根if(j > sqrt(i)){//如果条件成立,打印该数字并格式化打印语句printf("%4d ",i);//打印一次,计数器自增1count++;//判断:当计数器是10的倍数,打印一个回车符if(count % 10 == 0)printf("\n");}//执行到这里就完成了对一个数字的判断//继续执行外层for循环,对下一个数字进行判断}
}

运行结果如下图:

声明:文章属作者原创,禁止抄袭搬运,转载请注明作者

C语言求100到500的所有质数,每10个数字一行打印相关推荐

  1. c语言1到200能被4整除,c语言求[100,200]之间能被4整除,不能被5整除的数之和

    C语言求100-500之间的素数.懂的人帮下我, #include#includevoidmain(){inti,j;for(j=101;j 用C语言编程求100-200之间能被3整除但不能被5整除的 ...

  2. C语言:求分解一个任意合数为质数乘积形式

    C语言:求分解一个任意合数为质数乘积形式 如: 100是要分成2*2*5*5才算最后的答案 7=1*7的形式是正确的 16=2*2*2*2 正确 #include<stdio.h> mai ...

  3. c语言求100以内整除13的最大,VB程序设计的一道题,找出100以内能被3整除的所有数之和,并把值保存在一维数组中...

    VB程序设计的一道题,找出100以内能被3整除的所有数之和,并把值保存在一维数组中以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看 ...

  4. c语言求100以内被7整除的最大自然数,编程,求100以内被7整除的最大自然数

    java 编程,求1000以内能被17整除数的和 publicclassTest{publicstaticvoidmain(String[]args){intsum=0;for(inti=1;i c# ...

  5. C语言——求100以内素数

    问题:求100以内素数? 质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能被其他自然数整除. #include<stdio.h> int ma ...

  6. c语言求100内素数

    求100内素数这里两种赋值方法(解析都在注释里面,源码都放下面了): 一:代码解析 源码: //输出100内素数 #include<stdio.h> int main() {int i,j ...

  7. c语言求素数_C语言 | 求100~200的素数

    "要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人-万中无一" --包租婆这道理放在C语言学习上也一并受用.在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语 ...

  8. C语言求100 999之间的水仙花数,C语言输出100到999中所有的水仙花数

    ---------------------------------------------------------------------------------------------------- ...

  9. c语言求100∑k=1k 30,C语言程序设计〔第三章〕.ppt

    C语言程序设计[第三章] C 语言程序设计 第三章 程序控制结构 集美大学计算机学院 本章主要内容 程序设计方法简述 选择结构程序设计 if -else 语句 switch语句 循环结构程序设计 四种 ...

  10. c语言求100以内偶数和while,c语言 求1到100以内的偶数之和

    满意答案 npiim 2013.05.24 采纳率:57%    等级:12 已帮助:7545人 答:一.临界考虑错误... 考虑当·i·等于98的结束后·· ··这个循环里面的b是为99···· · ...

最新文章

  1. eDRX中的Paging
  2. javascript 水平文字垂直滚动
  3. 为什么Python发展这么快,有哪些优势?
  4. matlab怎么输入输出文件,[转载]底层文件输入输出函数
  5. GPU — CUDA 编程模型
  6. python安装好后打不开_windows的cmd中输入python后打不开python?
  7. 浅谈 iOS 版本号
  8. 如何写优雅的SQL原生语句?
  9. SearchScore
  10. WordPress的用户系统总结
  11. realloc函数使用总结
  12. windows 2003负载均衡故障切换
  13. 实例解析linux内核I2C体系结构(2)
  14. 7-6 考试座位号 15 分 C语言代码,PAT Basic 1041. 考试座位号(15)(C语言实现)
  15. C# 23种设计模式
  16. 日语专业双学位选计算机,湖北师范大学计算机科学与技术(日语双学位)专业2015年在湖北理科高考录取最低分数线...
  17. list和forward_list
  18. Oracle的CaseWhen
  19. mac word 复制自动产生书签
  20. adb工具的使用方法详解

热门文章

  1. 2018 文章合集,200+ 篇
  2. 注册机偷懒写法3、之内联Hook让程序自己弹出注册码
  3. Android Sensors 总结一 (介绍)
  4. html图片未找到替换,js 设置img标签的src资源无法找到的替代图片(通过img的属性设置)...
  5. uniapp问题界面模板
  6. 关于海关新规的一些解读(附热门产品税率表)zz
  7. ubuntu桌面安装
  8. 虚拟机linux备份软件有哪些,备份工具的软件推荐比较
  9. Traceback (most recent call last): File “/home/xwt/.conda/envs/smpl/bin/pip“, line 5, in <module>
  10. 高电压功率放大器在压电微泵一体化自闭环微系统的应用