C语言之“输出100~200之间的素数”
前言
在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之间的素数”相关推荐
- 输出100 - 200之间的素数C语言
输出100 - 200之间的素数 素数就是质数,即除了1和它本身不再有求它因数的自然数 那么这道题的思路就是用100到200之间的数去除以比这个数小的所有数(除了1和它本身),如果有余数说明它不是一个 ...
- 【C语言练习】将100~200之间的素数输出
将100~200之间的素数输出 一.编程思路 1.首先,我们要意识到,找出某个区间内符合条件的数,就需要对这个区间内的所有数进行遍历,而最常用的遍历方法就是利用for循环: 2.其次,在确定了遍历区间 ...
- 打印100~200 之间的素数,输出乘法口诀表,判断1000年---2000年之间的闰年
1.打印100~200 之间的素数 #include <stdio.h> int main() { int n,i; for(i=100;i<=200;i=i++) { for(n= ...
- C语言基础课 编写程序之1.编写一个判断素数的函数,并利用该函数输出100~200的所有素数2.编写一个函数fun(),函数功能是:判断一个整数是否既是5又是7的整倍数,若是,输出yes,不是,输出n
1.编写一个判断素数的函数,并利用该函数输出100~200的所有素数 #include<stdio.h> #include<math.h> int fun(int n) {in ...
- 打印100~200之间的素数。
. 打印100~200之间的素数. #include <stdio.h> #include<stdlib.h>void main(){ int a,b; for(a=100;a ...
- 求解100~200之间的素数
求解100~200之间的素数目录 文章目录 求解100~200之间素数目录 前言 一.素数是什么? 二.求解素数的方法 1.常规方法 2.优化方法 3.另辟蹊径 总结 前言 对于很多人对求解素数存在一 ...
- 求出100~200之间的素数
求出100~200之间的素数的个数,并求出所有的素数. 分析:素数定义是只能被1和该数本身整除 package com.math.forth;/*** 求出100~200之间的素数的个数,并求出所有的 ...
- 打印100~200 之间的素数
编写思想:对100到200之间的数依次进行for循环判断,看其是否为素数.判断方法:对于一个自然数,除了1以外,不是素数就是合数.若该数字是素数,则不能被除了1和它自身以外的数整除:而一个数如果是合数 ...
- (C语言)输出100以内的所有素数
输出100以内的所有素数 题目:编写一个程序,找出1~100中的所有素数. 输入输出格式要求: 要求每个数后面都要输出逗号, 请不要输出其他字符 例如: 输出:2,3,5, 以下是代码: #inclu ...
- C语言基础 - 输出1-100万之间的素数
其实这个很简单 代码 网上也一大堆... //判断素数 BOOL isPrime(int num) {for (int i = 2; i <= sqrt(num); i++) {//能整除则不为 ...
最新文章
- python面向对象编程的优点-Python语言有哪些优点?
- matlab 随机森林算法_(六)如何利用Python从头开始实现随机森林算法
- 一文带你了解java面向对象的三大特性:继承、封装、多态
- ffmpeg 截图太模糊了_PPT图片模糊?导师说放大!
- PWN-PRACTICE-CTFSHOW-5
- C++ 什么是伪函数,以及伪函数的使用
- php 可选表格,PHP_表格标记, 
■ 表格标记
TABLE - phpStudy
- NIPS中稿,聊聊科研!
- 这个技巧,让你更从容地使用Mac电脑~
- http客户端-性能比较系列-第二篇-多线程
- WIN7清理C盘空间垃圾的BAT脚本
- 实部和虚部高斯变量瑞利衰落matlab,瑞利信道仿真
- Qt视频直播软件--项目实战(Day5)
- Windows_5种方法解除Windows密码
- 动态二级下拉菜单html,jquery实现漂亮的二级下拉菜单代码
- 没了疫情红利的华大基因,靠什么保持增长?
- VMware 8安装苹果操作系统Mac OS X 10.7 Lion正式版
- 进击的UI----------------(常见快捷键的使用)
- 163邮箱开启SMTP权限
- OD笔试题-空汽水瓶可以换汽水