C语言求给定范围内的所有素数代码及解析

栏目: C · 发布时间: 6年前

内容简介:求给定范围start〜end之间的所有素数。判定一个整数m是否为素数的关键就是要判定整数m能否被除1和它自身以外的任何其他整数所整除,若都不能整除,则m即为素数。本题求的是给定范围start〜end之间的所有素数,考虑到程序的通用性,需要从键盘上输入start和end值,例如输入start=1,end=1000,则所编写的程序应能够打印出1〜1000之间的所有素数。

问题描述

求给定范围start〜end之间的所有素数。

问题分析

判定一个整数m是否为素数的关键就是要判定整数m能否被除1和它自身以外的任何其他整数所整除,若都不能整除,则m即为素数。

本题求的是给定范围start〜end之间的所有素数,考虑到程序的通用性,需要从键盘上输入start和end值,例如输入start=1,end=1000,则所编写的程序应能够打印出1〜1000之间的所有素数。

算法设计

由问题分析可知,该问题考虑用双层循环结构实现。

外层循环对start〜end之间的每个数进行迭代,逐一检查其是否为素数。外层循环的循环变量用变量m表示,m即代表当前需要进行判断的整数,显然其取值范围为start≤m≤end。

内层循环稍显复杂,完成的功能是判断当前的m是否为素数。设内循环变量为m,程序设计时i从2开始,直到为止。用i依次去除需要判定的整数m,如果m能够被中的任何一个整数所整除,则表示i必然小于或等于,则可以确定当前的整数m不是素数,因此,应提前结束该次循环。如果n不能被中的任何一个整数所整除,则在完成最后一次循环后,i还需要加1,即,之后才终止循环。此时,可以确定当前的整数m为素数。

可以使用标志位flag来监控内外循环执行的情况。在定义变量时将flag初值设为1,在内层循环中判断时,如果m能够被中的任何一个整数所整除,则在内循环中将flag设置为0。如果m不能被中的任何一个整数所整除,则在内循环中不会修改flag标志的值,退出内循环后它的值仍为1。此时在外循环中对flag的值进行判断,如果flag=0,则显然当前的m不是素数,如果flag=1,则当前的m是素数,应该将其打印出来。

还需要注意的是,在外循环中,每次要进行下一次迭代之前,要先将flag标志再次置为1。

程序流程图:

C语言求给定范围内的所有素数代码及解析

下面是完整的代码:

#include<stdio.h>

#include<math.h>

int main()

{

int start, end, i, k, m, flag=1, h=0;

do

{

printf("输入 起始数字 和 结束数字:");

scanf("%d%d", &start, &end);

}while(!(start>0 && start<end));

printf("......... (%d-%d)素数列表.........\n", start, end);

for(m=start; m<=end; m++)

{

k=sqrt(m);

for(i=2; i<=k; i++)

if(m%i==0)

{

flag=0;

break;

}

if(flag)

{

printf("%-4d",m);

h++;

if(h%10==0)

printf("\n");

}

flag=1;

}

printf("\n共有%d个素数\n", h);

return 0;

}

运行结果:

输入 起始数字 和 结束数字:1 200

......... (1-200)素数列表.........

1  2  3  5  7  11  13  17  19  23 

29  31  37  41  43  47  53  59  61  67 

71  73  79  83  89  97  101 103 107 109

113 127 131 137 139 149 151 157 163 167

173 179 181 191 193 197 199

共有47个素数

C语言求给定范围内的所有素数代码及解析

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-11/155472.htm


以上所述就是小编给大家介绍的《C语言求给定范围内的所有素数代码及解析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

机器学习

机器学习

周志华 / 清华大学出版社 / 2016-1-1 / 88.00元

机器学习是计算机科学与人工智能的重要分支领域. 本书作为该领域的入门教材,在内容上尽可能涵盖机器学习基础知识的各方面。 为了使尽可能多的读者通过本书对机器学习有所了解, 作者试图尽可能少地使用数学知识. 然而, 少量的概率、统计、代数、优化、逻辑知识似乎不可避免. 因此, 本书更适合大学三年级以上的理工科本科生和研究生, 以及具有类似背景的对机器学 习感兴趣的人士. 为方便读者, 本书附录给出了一......一起来看看 《机器学习》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具