前言

在C语言的学习过程中,会有一个又一个的经典案例,就比如今天讲的这个——素数的输出,也算C语言学习中的一个经典历程。


一、什么是素数

  • 素数又称质数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
  • 例如:5这个数的因数只有1和5,再也找不出其他的因数了,这样的数就叫做素数。
  • 下图为0~500之间的素数表:
  • 了解了什么是素数后,下面我将用3种不同的方案来实现“输出100到200之间的素数”。

二、输出100到200之间的素数

方案一

  • 是用100~200之间的每一个数字,除以2到其本身,如果此过程中出现了整除,则该数不是素数,如果未出现整除,则该数是素数,将此数进行输出。
    代码如下:
#include <stdio.h>int main()
{int i = 0, j = 0, number = 0;for (i = 100; i <= 200; i++){for (j = 2; j <= i; j++){if (i % j == 0)  /*判断 i 除 j 取余,等于0*/{break;       /*退出循环*/}}if (i == j) /*判断 i 是否 等于 j,等于则是素数*/{number++; /*用作素数个数的计数*/printf("%d.\t", number);/*可注释掉,不影响程序的运行*/printf("%d\n", i); /*输出素数*/}}return 0;
}

方案二

  • 这里使用了 sqrt() 函数,sqrt() 函数是平方根函数,功能是计算一个非负实数的平方根,调用时程序要包含(math.h)头文件。
  • 非素数可以写成除了1和它本身相乘的 a * b 方式,而 a、b 之间必有一个小于等于 a b 之积的开平方根。如果这个非素数能够被 a 整除,则相应的肯定可以被 b 整除。
  • 这种方法用100~200之间的数字除以2到它的开平方根(如果该数的平方根是整数则可以除到),在此之间如果出现了整除,则该数不是素数。如果未出现整除,则该数是素数,将此数进行输出。方案二要比方案一更加简便,运行的次数减少。
    代码如下:
#include <stdio.h>
#include <math.h>int main()
{int i = 0, j = 0, number = 0;for (i = 100; i <= 200; i++){for (j = 2; j <= sqrt(i); j++)  /*循环的最大次数是 i的平方根*/{if (i % j == 0)    /*判断 i 除 j 取余,等于0*/{break;       /*退出循环*/}}if (j > sqrt(i)){number++;   /*用作素数个数的计数*/printf("%d.\t", number);/*可注释掉,不影响程序的运行*/printf("%d\n", i); /*输出素数*/}}return 0;
}

方案三

  • 是对方案二的优化处理。
  • 在100~200之间的所有偶数都不是素数,所以可以去除,直接对奇数进行判断,对于方案二来说可以让程序的运行时间减少一半。
    代码如下:
#include <stdio.h>
#include <math.h>int main()
{int i = 0, j = 0, number = 0;for (i = 101; i <= 200; i += 2) /*此处 i += 2 等同于 i = i + 2;*/{for (j = 2; j <= sqrt(i); j++)  /*循环的最大次数是 i的平方根*/{if (i % j == 0)    /*判断 i 除 j 取余,等于0*/{break;       /*退出循环*/}}if (j > sqrt(i)){number++;   /*用作素数个数的计数*/printf("%d.\t", number);/*可注释掉,不影响程序的运行*/printf("%d\n", i); /*输出素数*/}}return 0;
}

总结

以上就是我用C语言输出”100~200之间的素数“的见解与代码的编写,如果您有更好的方案,欢迎留言评论。

C语言之“输出100~200之间的素数”相关推荐

  1. 输出100 - 200之间的素数C语言

    输出100 - 200之间的素数 素数就是质数,即除了1和它本身不再有求它因数的自然数 那么这道题的思路就是用100到200之间的数去除以比这个数小的所有数(除了1和它本身),如果有余数说明它不是一个 ...

  2. 【C语言练习】将100~200之间的素数输出

    将100~200之间的素数输出 一.编程思路 1.首先,我们要意识到,找出某个区间内符合条件的数,就需要对这个区间内的所有数进行遍历,而最常用的遍历方法就是利用for循环: 2.其次,在确定了遍历区间 ...

  3. 打印100~200 之间的素数,输出乘法口诀表,判断1000年---2000年之间的闰年

    1.打印100~200 之间的素数 #include <stdio.h> int main() { int n,i; for(i=100;i<=200;i=i++) { for(n= ...

  4. C语言基础课 编写程序之1.编写一个判断素数的函数,并利用该函数输出100~200的所有素数2.编写一个函数fun(),函数功能是:判断一个整数是否既是5又是7的整倍数,若是,输出yes,不是,输出n

    1.编写一个判断素数的函数,并利用该函数输出100~200的所有素数 #include<stdio.h> #include<math.h> int fun(int n) {in ...

  5. 打印100~200之间的素数。

    . 打印100~200之间的素数. #include <stdio.h> #include<stdlib.h>void main(){ int a,b; for(a=100;a ...

  6. 求解100~200之间的素数

    求解100~200之间的素数目录 文章目录 求解100~200之间素数目录 前言 一.素数是什么? 二.求解素数的方法 1.常规方法 2.优化方法 3.另辟蹊径 总结 前言 对于很多人对求解素数存在一 ...

  7. 求出100~200之间的素数

    求出100~200之间的素数的个数,并求出所有的素数. 分析:素数定义是只能被1和该数本身整除 package com.math.forth;/*** 求出100~200之间的素数的个数,并求出所有的 ...

  8. 打印100~200 之间的素数

    编写思想:对100到200之间的数依次进行for循环判断,看其是否为素数.判断方法:对于一个自然数,除了1以外,不是素数就是合数.若该数字是素数,则不能被除了1和它自身以外的数整除:而一个数如果是合数 ...

  9. (C语言)输出100以内的所有素数

    输出100以内的所有素数 题目:编写一个程序,找出1~100中的所有素数. 输入输出格式要求: 要求每个数后面都要输出逗号, 请不要输出其他字符 例如: 输出:2,3,5, 以下是代码: #inclu ...

  10. C语言基础 - 输出1-100万之间的素数

    其实这个很简单 代码 网上也一大堆... //判断素数 BOOL isPrime(int num) {for (int i = 2; i <= sqrt(num); i++) {//能整除则不为 ...

最新文章

  1. python面向对象编程的优点-Python语言有哪些优点?
  2. matlab 随机森林算法_(六)如何利用Python从头开始实现随机森林算法
  3. 一文带你了解java面向对象的三大特性:继承、封装、多态
  4. ffmpeg 截图太模糊了_PPT图片模糊?导师说放大!
  5. PWN-PRACTICE-CTFSHOW-5
  6. C++ 什么是伪函数,以及伪函数的使用
  7. php 可选表格,PHP_表格标记,  ■ 表格标记 TABLE - phpStudy
  8. NIPS中稿,聊聊科研!
  9. 这个技巧,让你更从容地使用Mac电脑~
  10. http客户端-性能比较系列-第二篇-多线程
  11. WIN7清理C盘空间垃圾的BAT脚本
  12. 实部和虚部高斯变量瑞利衰落matlab,瑞利信道仿真
  13. Qt视频直播软件--项目实战(Day5)
  14. Windows_5种方法解除Windows密码
  15. 动态二级下拉菜单html,jquery实现漂亮的二级下拉菜单代码
  16. 没了疫情红利的华大基因,靠什么保持增长?
  17. VMware 8安装苹果操作系统Mac OS X 10.7 Lion正式版
  18. 进击的UI----------------(常见快捷键的使用)
  19. 163邮箱开启SMTP权限
  20. OD笔试题-空汽水瓶可以换汽水

热门文章

  1. 蓝桥杯练习题 <座次问题> 排列型枚举 next_permutation
  2. 动词ing基本用法_动词ing形式的用法
  3. PowerPoint安装IguanaTex方法
  4. 如何购买并配置华为云服务器?
  5. 华为云服务器安装宝塔到服务器
  6. 程序员必读: 摸清Hash表的脾性
  7. GB与BIG5内码转换COM原代码
  8. 三大变换与自控(二)傅里叶级数的复数形式推导
  9. 前端关于Base64编码的一些技术分析
  10. 知来者之可追_#AboutLastWeek:老朋友,新来者以及介于两者之间的人