C语言打印100 ——200之间的素数
2016-06-11 18:49
671 查看
根据素数定义,只能被1和它本身整除的自然数为素数。利用定义可以循环判断该数除以比它小的每一个自然数(不包括1),如果都不能整除,则这个数就是素数。
由于上述方法效率太低,对此方法进行优化。我们都知道偶数一定不是素数,那只求剩余一般的数。如果一个数是合数,那么它的最小质因数肯定小于等于他的平方根,由合数定理可进一步优化,只需要循环判断该数除以比它的平方根小的每一个自然数(大于1)即可。
C语言代码如下:
本文出自 “Scen” 博客,请务必保留此出处http://10741357.blog.51cto.com/10731357/1698507
由于上述方法效率太低,对此方法进行优化。我们都知道偶数一定不是素数,那只求剩余一般的数。如果一个数是合数,那么它的最小质因数肯定小于等于他的平方根,由合数定理可进一步优化,只需要循环判断该数除以比它的平方根小的每一个自然数(大于1)即可。
C语言代码如下:
#include<stdio.h> #include<math.h> int main() { int m,k,i,count=0; for(m=101;m<=200;m+=2) { k=(int)sqrt(m);/*(int)sqrt(m)将浮点型转为整型*/ for(i=2;i<=k;i++) if(m%i==0)break; if(i>k) { count++; printf("%d ",m); } }printf("\ncount=%d",count); return 0; }一般说来,程序进入循环体后在下次循环判断之前执行循环体里的所有语句,break和continue语句可以终止循环或忽略某些循环。break: 此语句导致程序终止包含它的循环,并进行程序的下一阶段(整个循环后面的语句),即不是跳到下一个循环周期而是退出循环。如果break语句包含在嵌套循环里,它只跳出最里面的循环。continue:循环语句里有此语句时,程序运行到此语句时,不在执行循环体里continue后面的语句而是跳到下一个循环入口处执行下一个循环。如果continue语句包含在嵌套循环语句里,它只影响包含它的最里层的循环。
本文出自 “Scen” 博客,请务必保留此出处http://10741357.blog.51cto.com/10731357/1698507
相关文章推荐
- C语言判断1000—2000年之间的闰年
- C语言中不允许创建临时变量,交换两个数的内容
- C语言中写一个函数返回参数二进制中 1 的个数
- C语言求两个数中最大公约数
- 第14周项目3--数组类模板
- T2:滑雪(cowski.pas/c/cpp)
- notepad++搭建C语言环境(Dev c++)
- C语言动态和静态内存分配
- C语言结构体
- 如何用C语言编写PHP扩展的详解
- C++分配/释放动态内存
- C++中多线程与Singleton的那些事儿
- c++友元
- [leetcoide] 【字符串】125. Valid Palindrome
- C/C++程序员必须熟练应用的开源项目
- 用C语言来分割字符串
- 第十六周项目 小玩文件
- c++实践参考:圆柱
- Length of Last Word
- 第十六周项目 阅读程序(9)