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

那么首先让我们生成a到b间的所有数,记为i,用一个简单的for循环就能解决,接下来我们要判断生成的数是不是素数,我们可以从素数最简单的性质出发:除了1和它本身以外,不能被其他正整数整除,(我们当然只需要考虑小于这个数的正整数)那么让我们生成从2到i-1的所有数,记为c也是一个for循环就能解决,然后让i去模上每一个c,只要出现一个i%c为0,c就不必继续生成了,直接跳出内循环,内循环结束,而当所有c都不使循环break,内循环也会结束,此时的i就是素数了,但是两种情况内循环都会结束,我们怎么区别出哪种情况i为素数呢,我们注意到内循环正常结束时c的值于i相等,那么我们在内循环后面加上一个if判断,剔除掉break出的i,只选择正常结束的i,并将其打印,计数器加一

#include <stdio.h>
int main()
{int a=0;int b=0;int i=0;int c = 0;int num = 0;scanf("%d%d", &a, &b);for (i = a; i <= b; i++){for (c = 2; c <= i - 1; c++){if (i%c == 0){break;}}if (c == i){printf("%d ", i);num++;}}printf("\n有%d个素数", num);return 0;
}

上面的思路没问题,但是略显繁琐,我们可以利用素数的一个性质来优化该代码,我们发现,其实一个数字x的因数分成两大部分,一部分是小于x的平方根,另外一部分大于x的平方根,小于平方根和大于平方根的部分是一一对应的,例如24=2*12=3*8=4*6,只要在2到x的二次方根内找到一个能整除x的数就能判定x不是素数。我们要用根号函数sqrt()需要引用头文件<math.h>,修改后得到以下代码

#include <stdio.h>
#include <math.h>
int main()
{int a = 0;int b = 0;int i = 0;int c = 0;int num = 0;scanf("%d%d", &a, &b);for (i = a; i <= b; i++){for (c = 2; c <= sqrt(i*1.0); c++){if (i%c == 0){break;//跳出内循环}}if (c > sqrt(i*1.0)){printf("%d ", i);num++;}}printf("\n总共有%d个素数", num);return 0;
}

问题便得到解决了。

C语言判断素数方法之试除法相关推荐

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

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

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

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

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

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

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

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

  5. c语言判断素数squ,poj1811——Prime Test//素数判断+整数分解因子

    题意:给定N,如果N为素数,输出"Prime",否则输出其最小因子. 思路:用miller_rabin判断素数,pollardRho用于整数因子的分解.整数因子分解还有一个更快的算 ...

  6. C语言判断素数的方法

    最近刚复习C语言,重头开始学起,进行记录每次编程.本次写的是输入一个大于3的正整数,判断其是否为素数. #include <stdio.h>int main(){int i,j,a;a=0 ...

  7. linux c开多线程算质数,C语言判断素数(质数)

    这是一个C语言 while 循环的示例:判断一个整数 n(n>1)是否为素数(也成质数). 问题分析 输入:一个整数n(n>1). 输出:Yes or No. 如果一个整数 n(n> ...

  8. C语言判断素数(求素数)思路

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

  9. 素数 c语言 时间少,C语言判断素数怎么优化时间,1000000以内,不用代码,指点一下就好...

    匿名用户 1级 2016-09-04 回答 基本思想 用筛法求素数的基本思想是:把从1开始的.某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉.剩下的数中选择最小的数是素数,然后去掉它的 ...

最新文章

  1. php函数serialize()与unserialize()
  2. 视频编解码的理论和实践2:Ffmpeg视频编解码
  3. hdu 4739 状压DP
  4. C++ Vecctor容器浅析
  5. 为什么要重写hashCode()方法和equals()方法以及如何进行重写
  6. 10W人都想知道的答案!可视化黑科技,这4个数据工具谁最厉害的?
  7. Vonage再度入围IDC CPaaS“领导者”
  8. 小米无缝切换60hz/90hz/120hz/144hz刷新率!
  9. Yum未完成事务问题
  10. 禁用浏览器cache,是浏览器上的回退按钮失效。
  11. 产品配置管理相关通知
  12. fgo服务器维护抽卡,FGO国服最佳抽卡时间推荐,玄学或许能让你脱非入欧!
  13. UML与Rational Rose
  14. 东原服务器开机显示bb,启用tls后,服务器出现remote error: tls: bad certificate
  15. 嵌入式 linux 之 Lzma 移植
  16. 最新Hive/Hadoop高频面试点小集合
  17. PPT基础(一)怎么把图片设置为背景
  18. 互联网视频直播点播EasyDSS平台如何通过接口设置录像计划?
  19. Windows 7 彻底退出历史舞台
  20. Mencoder 介绍

热门文章

  1. Web H5 接入海康录像机 (rtsp转flv)
  2. 【计算机毕业设计】智乐健身后台管理系统
  3. (附源码)小程序+spring boot校园二手交易平台 毕业设计 191637
  4. java绝对素数_java实现找素数
  5. 智能运维 | 故障诊断与根因分析论文一览
  6. 基于STM32 电机库(5.4.4)的单电阻采样调试总结
  7. 零基础学Linux内核之设备驱动篇(8)_设备模型
  8. html浮动图标代码,返回顶部浮动图标代码
  9. python config文件的读写
  10. IDEA集成GitHub