题目描述

运行 C 程序,输出 100 至 200 之间的质数。

输入描述

输出描述

输出 100 至 200 之间的质数,每行输出一个质数,每个质数前面需要带有序号。

输出样例

解题思路

《一文解决如何使用 C 语言判断质数(素数)》一文中,我详细讲解了质数以及如何使用 C 语言判断质数,本篇文章将引用此文中判断质数的函数。我共分享了两种判断方法,分别是暴力求解和巧用平方根,出于对程序执行效率的考虑,在这里我以巧用平方根为例进行讲解。

方案一

  • 首先我们将巧用平方根判断质数的函数复制到程序中。
  • 然后利用 for 循环遍历 100 至 200 之间的数,逐一判断哪个是质数。
  • 找出质数后,将存储质数个数的变量自加 1,并将此变量和该质数输出。

具体代码如下:

#include <stdio.h>
#include <math.h> /* 包含 <math.h> */ /****************************************************************************
* 函数名: Judge_PrimeNumber
* 功能描述:判断一个数是否为质数
* 输入参数:
* _number:需要判断的数
* 返回值:
* 1:是质数
* 0:不是质数
* 外部参数:无
* 注意事项:无
*
* 作者: 梁国庆
* 日期: 2021-12-11
* 修改记录:
****************************************************************************/
int Judge_PrimeNumber(int _number)
{
int i = 0; if (_number < 2)
{
return 0; /* 需要判断的数小于 2,则不是质数,返回 0 */
} for (i = 2; i <= sqrt(_number); i++) /* 遍历从 2 到 √_number 区间中的所有数 */
{
if (_number % i == 0)
{
return 0; /* 若可以被整除,则不是质数,返回 0 */
}
} return 1; /* 若执行完以上程序均未返回,则是指数,返回 1 */
} int main()
{
int i = 0, num = 0; for (i = 100; i <= 200; i++) /* 遍历 100 至 200 之间的数 */
{
if (Judge_PrimeNumber(i) == 1) /* 调用判断质数的函数,判断输入的整数 i */
{
num++; printf("%d.\t", num); /* 输出当前质数的个数 */
printf("%d\n", i); /* 输出质数 */
}
} return 0;
}

方案二

本方案是对方案一的优化处理。

在 100 至 200 之间的所有偶数都不是质数,所以可以将其去除,直接对奇数进行判断,对于方案一来说可以让程序的运行时间减少一半,运行效率大幅度提高。

具体代码如下:

#include <stdio.h>
#include <math.h> /* 包含 <math.h> */ /****************************************************************************
* 函数名: Judge_PrimeNumber
* 功能描述:判断一个数是否为质数
* 输入参数:
* _number:需要判断的数
* 返回值:
* 1:是质数
* 0:不是质数
* 外部参数:无
* 注意事项:无
*
* 作者: 梁国庆
* 日期: 2021-12-11
* 修改记录:
****************************************************************************/
int Judge_PrimeNumber(int _number)
{
int i = 0; if (_number < 2)
{
return 0; /* 需要判断的数小于 2,则不是质数,返回 0 */
} for (i = 2; i <= sqrt(_number); i++) /* 遍历从 2 到 √_number 区间中的所有数 */
{
if (_number % i == 0)
{
return 0; /* 若可以被整除,则不是质数,返回 0 */
}
} return 1; /* 若执行完以上程序均未返回,则是指数,返回 1 */
} int main()
{
int i = 0, num = 0; for (i = 101; i <= 200; i += 2) /* 遍历 101 至 200 之间的数 */
{
if (Judge_PrimeNumber(i) == 1) /* 调用判断质数的函数,判断输入的整数 i */
{
num++; printf("%d.\t", num); /* 输出当前质数的个数 */
printf("%d\n", i); /* 输出质数 */
}
} return 0;
}

C 语言输出100至200之间的质数(素数)的更多相关文章

  1. Problem B: 调用函数,输出100到200之间的所有素数

    #include <stdio.h> int isPrime(unsigned int n)//定义素数函数 { int i; || n == ) ; ; i * i <= n; i ...

  2. C语言打印100到200之间的素数

    用C语言打印素数,我们首先要了素数的相关定义:只有1和它本身两个因数的自然数,也就是说除了1和它本身外,不能被其他自然数整除的数就称为素数. 例如:101只能被1 和101 整除:103只能被1 和1 ...

  3. 输出2到n之间的全部素数

    本题要求输出2到n之间的全部素数,每行输出10个.素数就是只能被1和自身整除的正整数.注意:1不是素数,2是素数. 输入格式: 输入在一行中给出一个长整型范围内的整数. 输出格式: 输出素数,每个数占 ...

  4. c - 输出 101 至 200之间的素数.

    #include <stdio.h> #include <math.h> //判断 101-200 之间有多少个素数,并输出所有素数. int main(void) { , e ...

  5. python_输出100:200内的素数

    sushu=[] for i in range(100,201): for j in range(2,i): if i%j==0: break if i==j+1: sushu.append(i) p ...

  6. 编写图形界面下的Java Swing程序,接受用户输入的两个数据为上下限,然后输出上、下限之间的所有素数。(结果部分每行显示10个数据)

    这个代码我整体写的比较简单,读者可以简单参考一下,对人家题目要求略微修改了一下,多加了一个“置空”按钮.下图为我设计的界面 运行程序后的截图请看我后面的截图: package com.wangshil ...

  7. java中请给出例子程序:找出n到m之间的质数。

    9.1 找出100到200之间的质数.  public class Test {     public static void main(String[] args){         for (in ...

  8. 黑马程序员——经典C语言程序设计100例

    1.数字排列 2.奖金分配问题 3.已知条件求解整数 4.输入日期判断第几天 5.输入整数进行排序 6.用*号显示字母C的图案 7.显示特殊图案 8.打印九九口诀 9.输出国际象棋棋盘 10.打印楼梯 ...

  9. C语言经典100例(1-50)

    [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去掉不满足条件的排列. main ...

  10. 代码实现:判断101-200之间有多少个素数(质数),并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

    package com.loaderman.Coding; /* 判断101-200之间有多少个素数(质数),并输出所有素数. 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能 ...

随机推荐

  1. 教你如何解决T+0的问题

    摘要:T+0查询是指实时数据查询,数据查询统计时将涉及到最新产生的数据. 本文分享自华为云社区<大数据解决方案:解决T+0问题>,作者: 小虚竹 . T+0问题 T+0查询是指实时数据查询 ...

  2. SQL中的Convert()函数方法(转换数据格式)

    Convert函数的使用方法 格式: convert(data_type(length),data_to_be_converted,style) data_type(length)转换的目标数据类型, ...

  3. ysoserial commonscollections3 分析

    cc3利用链如下: TrAXFilter(Templates templates) TemplatesImpl->newTransformer() TemplatesImpl->getTr ...

  4. 沁恒CH32V003F4P6 开发板上手报告和Win10环境配置

    CH32V003 沁恒最近推出的低价CH32V003系列, 基于青稞RISC-V2A内核, 48MHz主频, 2KB SRAM, 16KB Flash, 工作电压兼容3.3V和5V. 主要参数如下 S ...

  5. [AGC057D] Sum Avoidance

    Link 本篇题解大部分内容来自这篇文章 首先题意翻译: 给定一个正整数 \(S\) ,称一个正整数集合 \(A\) 是好的,当且仅当它满足以下条件: \(A\) 中元素在 \((0,S)\) 之间 ...

  6. zk系列二:zookeeper实战之分布式统一配置获取

    前面介绍了zk的一些基础知识,这篇文章主要介绍下如何在java环境下获取zk的配置信息:主要基于zk的监听器以及回调函数通过响应式编程的思想将核心代码糅合成一个工具类,几乎做到了拿来即用: 在分布式集 ...

  7. C#多线程之线程基础篇

    目录 一.概念 二.原理 硬件结构 运行时 三.基础 创建与启动 传递参数 前台/后台线程 异常处理 中断与中止 中断(Interrupt) 中止(Abort) 协作取消模式 四.异步编程模式 异步编 ...

  8. 关于C#Section配置未初始化的问题

    转载 https://www.cnblogs.com/lxshwyan/p/10828305.html 如果使用了configSection节点,则configSection必须位于根节点的第0个.A ...

  9. gin领域层:用户实体编写和值对象(初步)

    1.用户实体和值对象 2. 要做的事 3.常见的四层模型 4.Domin层 5.值对象

  10. Go语言核心36讲02

    你好,我是郝林,今天我分享的主题是,学习专栏的正确姿势. 到了这里,专栏的全部内容已经都推送到你的面前了.如果你已经同步学习完了,那么我要给你点一个大大的赞! 还没有看完的同学也不要着急,因为推送的速 ...