C语言求100到500的所有质数,每10个数字一行打印
什么是质数?
质数就是只能被1和他自己整除的数字
怎么实现这个程序?
使用for循环求出范围内所有数字,嵌套一个for循环求出1到范围内某个数字的平方根的所有数字,再通过求模运算来判断是否能整除,从而来判断是否为质数。
为什么是平方根呢?
第一次代码优化
一个数字的因数里,除了1和自己以外最大的因数一定小于等于自身的一半,换句话讲,一个数字不可能被大于自身一半的数字整除。
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个数字一行打印相关推荐
- 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整除的 ...
- C语言:求分解一个任意合数为质数乘积形式
C语言:求分解一个任意合数为质数乘积形式 如: 100是要分成2*2*5*5才算最后的答案 7=1*7的形式是正确的 16=2*2*2*2 正确 #include<stdio.h> mai ...
- c语言求100以内整除13的最大,VB程序设计的一道题,找出100以内能被3整除的所有数之和,并把值保存在一维数组中...
VB程序设计的一道题,找出100以内能被3整除的所有数之和,并把值保存在一维数组中以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看 ...
- c语言求100以内被7整除的最大自然数,编程,求100以内被7整除的最大自然数
java 编程,求1000以内能被17整除数的和 publicclassTest{publicstaticvoidmain(String[]args){intsum=0;for(inti=1;i c# ...
- C语言——求100以内素数
问题:求100以内素数? 质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能被其他自然数整除. #include<stdio.h> int ma ...
- c语言求100内素数
求100内素数这里两种赋值方法(解析都在注释里面,源码都放下面了): 一:代码解析 源码: //输出100内素数 #include<stdio.h> int main() {int i,j ...
- c语言求素数_C语言 | 求100~200的素数
"要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人-万中无一" --包租婆这道理放在C语言学习上也一并受用.在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语 ...
- C语言求100 999之间的水仙花数,C语言输出100到999中所有的水仙花数
---------------------------------------------------------------------------------------------------- ...
- c语言求100∑k=1k 30,C语言程序设计〔第三章〕.ppt
C语言程序设计[第三章] C 语言程序设计 第三章 程序控制结构 集美大学计算机学院 本章主要内容 程序设计方法简述 选择结构程序设计 if -else 语句 switch语句 循环结构程序设计 四种 ...
- c语言求100以内偶数和while,c语言 求1到100以内的偶数之和
满意答案 npiim 2013.05.24 采纳率:57% 等级:12 已帮助:7545人 答:一.临界考虑错误... 考虑当·i·等于98的结束后·· ··这个循环里面的b是为99···· · ...
最新文章
- eDRX中的Paging
- javascript 水平文字垂直滚动
- 为什么Python发展这么快,有哪些优势?
- matlab怎么输入输出文件,[转载]底层文件输入输出函数
- GPU — CUDA 编程模型
- python安装好后打不开_windows的cmd中输入python后打不开python?
- 浅谈 iOS 版本号
- 如何写优雅的SQL原生语句?
- SearchScore
- WordPress的用户系统总结
- realloc函数使用总结
- windows 2003负载均衡故障切换
- 实例解析linux内核I2C体系结构(2)
- 7-6 考试座位号 15 分 C语言代码,PAT Basic 1041. 考试座位号(15)(C语言实现)
- C# 23种设计模式
- 日语专业双学位选计算机,湖北师范大学计算机科学与技术(日语双学位)专业2015年在湖北理科高考录取最低分数线...
- list和forward_list
- Oracle的CaseWhen
- mac word 复制自动产生书签
- adb工具的使用方法详解
热门文章
- 2018 文章合集,200+ 篇
- 注册机偷懒写法3、之内联Hook让程序自己弹出注册码
- Android Sensors 总结一 (介绍)
- html图片未找到替换,js 设置img标签的src资源无法找到的替代图片(通过img的属性设置)...
- uniapp问题界面模板
- 关于海关新规的一些解读(附热门产品税率表)zz
- ubuntu桌面安装
- 虚拟机linux备份软件有哪些,备份工具的软件推荐比较
- Traceback (most recent call last): File “/home/xwt/.conda/envs/smpl/bin/pip“, line 5, in <module>
- 高电压功率放大器在压电微泵一体化自闭环微系统的应用