打印100~200 之间的素数
编写思想:对100到200之间的数依次进行for循环判断,看其是否为素数。判断方法:对于一个自然数,除了1以外,不是素数就是合数。若该数字是素数,则不能被除了1和它自身以外的数整除;而一个数如果是合数,则它的所有因子不会大于对其开根号所得出的数,由此可得出每个数最多时候的循环次数。
初次生成的源代码如下:
#include<stdio.h>
#include<math.h>
int main()
{int primer,variabe,sign;for(primer=101;primer<201;primer++){for(variabe=2;variabe<=sqrt(primer);variabe++){sign=0;if(primer%variabe==0) break;else sign=1;}if(sign==1)printf("%-5d",primer);}return 0;
}
运行结果如下:
101 103 107 109 113 127 131 137 139 149 151 157 163 167
173 179 181 191 193 197 199
由于以上程序产生了一些不必要的循环,增加了程序的时间复杂度,故而对其进行了改进。
改进1:去掉了标志变量sign,减少了内存的占用;
改进2:由于找的是100到200之间的素数,因此其间的偶数均不必进行判断,故而只剩下奇数,又由于奇数肯定无法被偶数整除,故而去掉variable中的偶数循环,降低了程序的时间复杂度。
改进后的代码如下:
#include<stdio.h>
#include<math.h>
int main()
{int primer,variabe;for(primer=101;primer<201;primer+=2){for(variabe=3;variabe<=sqrt(primer);variabe+=2){if(primer%variabe==0) break;}if(variabe>sqrt(primer))printf("%-5d",primer);}return 0;
}
运行结果同上一致:
101 103 107 109 113 127 131 137 139 149 151 157 163 167
173 179 181 191 193 197 199
转载于:https://blog.51cto.com/lookforward2/1717920
打印100~200 之间的素数相关推荐
- 打印100~200 之间的素数,输出乘法口诀表,判断1000年---2000年之间的闰年
1.打印100~200 之间的素数 #include <stdio.h> int main() { int n,i; for(i=100;i<=200;i=i++) { for(n= ...
- 打印100~200之间的素数。
. 打印100~200之间的素数. #include <stdio.h> #include<stdlib.h>void main(){ int a,b; for(a=100;a ...
- 【C语言练习】将100~200之间的素数输出
将100~200之间的素数输出 一.编程思路 1.首先,我们要意识到,找出某个区间内符合条件的数,就需要对这个区间内的所有数进行遍历,而最常用的遍历方法就是利用for循环: 2.其次,在确定了遍历区间 ...
- 求出100~200之间的素数
求出100~200之间的素数的个数,并求出所有的素数. 分析:素数定义是只能被1和该数本身整除 package com.math.forth;/*** 求出100~200之间的素数的个数,并求出所有的 ...
- 输出100 - 200之间的素数C语言
输出100 - 200之间的素数 素数就是质数,即除了1和它本身不再有求它因数的自然数 那么这道题的思路就是用100到200之间的数去除以比这个数小的所有数(除了1和它本身),如果有余数说明它不是一个 ...
- 求解100~200之间的素数
求解100~200之间的素数目录 文章目录 求解100~200之间素数目录 前言 一.素数是什么? 二.求解素数的方法 1.常规方法 2.优化方法 3.另辟蹊径 总结 前言 对于很多人对求解素数存在一 ...
- 打印1~200之间的素数(质数)c语言
素数:除了1和它自身以外没有其他因数的数 运用for循环的嵌套 循环1打印出2~200之间的所有数 循环2找到里面的素数
- 100~200之间的素数(及其四个优化方案)
要求素数,首先我们要知道什么是素数,在解题的时候,不要急着去寻找方法解题,而是要先了解它的根本,才可以在遇到类似题的时候轻松面对解决 质数(prime number)又称素数,有无限个.一个大于1的自 ...
- 用流程图、NS图、伪代码分别描述解决如下实际问题的算法。将100~200之间的素数输出。
正解: 伪代码: n=100 while n≤200 do i=2 while i≤√n if mod(n,i)=0 then i=n else i=i+1 end if end do if i &l ...
最新文章
- ugui 转轮_Unity3D研究院之Android NDK编译C/C++结合Unity实现本地数据共享(二十八)...
- jquery 加法 乘法运算 精确计算函数
- 云南计算机一级没有开考吗,2020年3月云南计算机一级考试时间
- 滤波器开发之三:基于算数平均的阶进平滑滤波器
- stream流倒序排序_java8 stream多字段排序
- threejs 判断对象是否在可视区内
- hello !CNBLOG
- CCF201604-2 俄罗斯方块
- 【Java并发编程一】线程安全问题
- python能做什么程序-Python能做什么工作?
- 【Win10应用开发】自定义磁贴通知的排版
- 知识就是力量!(内含赠书福利)
- centos7.4 update git
- windows开启Apache的mod_rewrite模块
- 如何在H264数据中获取PTS?
- 今天第一次做PIZZA,很成功.
- gopher攻击mysql_CTFweb类型(二十七)gopher对mysql的利用及例题讲解
- linux 软链接 相对路径,Linux入门之ln命令创建软链接的绝对路径和相对路径详解(Ubuntu)...
- 《联众》并购案细节公布,海虹海外公司浮出水面(ZT)
- python Excel表序号(leetcode)
热门文章
- python随机生成中文字符串_利用python3随机生成中文字符的实现方法
- 射影几何3:拓广平面
- java类函数默认的保护级别_事件说明
- html引入iview如何修改样式,vue中如何修改iView的样式,
- 如何获取握手包_白话详解TCP的三次握手到底做了些什么
- vue/cli 3.0 与 2.0脚手架怎样mock数据
- 6行Python实现验证码识别,太稳了!
- linux 统计根目录下的文件日期和出现的频率
- oracle9i解密rewrap,ORACLE9I+DATAGUARD+RMAN
- 第六天2017/04/11(2:Linux内核链表Demo、顺序表、链表的开发与设计)