对前期代码的升级打造
待到秋来九月八,我花开后百花杀
- 1. 打印100~200之间的素数
- 2. 输出乘法口诀表
先给自己一个激励话:
企者不立,跨者不行;
自见者不明;自是者不立;
自伐者无功;自矜者不长;
其在道也,曰余食赘形,物或恶之。
故有道者不处。
1. 打印100~200之间的素数
回顾一下原来的代码思想
思路:判断一个整数m是否是素数,只需把 i 被 2 ~ i 之间的每一个整数去除,如果都不能被整除,那么 i 就是一个素数。
//An highlighted blockvar foo = 'bar';
#include <stdio.h>
int main()
{int i, j;for (i = 100; i <= 200; i++){for (j = 2; j < i; j++){if (i % j == 0)break; }if (j >= i)//当被除数从j的循环中自然流出,而不是被break跳出,说明该数不能被2到该数前的所有数整除printf("%d\t", i);}system("pause");return 0;
}
弊端:算法过于刚硬,遍历太多,编译速度太慢。
思路升级:i 不必被 2 ~ i-1 之间的每一个整数去除,只需被 2 ~ √i 之间的每一个整数去除就可以了。如果 i 不能被 2 ~ √i 间任一整数整除,i 必定是素数。例如判别 17 是是否为素数,只需使 17 被 2~4 之间的每一个整数去除,由于都不能整除,可以判定 17 是素数。
原因:因为如果 i 能被 2 ~ i -1 之间任一整数整除,其二个因子必定有一个小于或等于 √i ,另一个大于或等于√i 。例如 16 能被 2、4、8 整除,16=28,2 小于 4,8 大于 4,16=44,4=√16,因此只需判定在 2~4 之间有无因子即可。
//An highlighted blockvar foo = 'bar';
#include <stdio.h>
#include <math.h>
int main()
{int i, j;//i为被除数,j为除数int k;//暂存的平方根结果for (i = 100; i <= 200; i++){k=(int)sqrt( (double)i );// 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换i的类型for (j = 2; j < k; j++){if (i%j == 0)break; }if (j >= k)printf("%d\t", i);//当被除数从j的循环中自然流出,而不是被break跳出,说明该数不能被2到该数前的所有数整除}system("pause");return 0;
}
2. 输出乘法口诀表
思路代码回顾。
思路:设置一个循环嵌套,遍历每一个1到9的乘数和被乘数,使其相乘,打印输出。
//An highlighted blockvar foo = 'bar';
#include <stdio.h>
int main()
{int i, j;for (i = 1; i < 10; i++)//循环嵌套,使被乘数1~9遍历{for (j = 1; j < 10; j++)//循环嵌套,使乘数1~9遍历{printf("%d*%d=%d\t", i, j, i*j);}printf("\n");} system("pause");return 0;
}
弊端:整体呈现九行九列,排行朴素,不够美观。是否能够像小时候背诵表那样以直角三角形形式排开呢?
思路升级:根据乘法的交换率,9X9乘法口诀表中81个式子其中有很多都有重复,例如:2X3=6和3X2=6一样,则保留2X3=6即可。
根据规律可以发现,凡是当 i > j 时就会出现重复,则可以省去
//An highlighted blockvar #include <stdio.h>
#include <windows.h>int main(){int i, j;for (i = 1; i <= 9; i++){for (j = 1; j <= 9; j++){if (j < i) //如果打印八个空格,就是右上三角形continue;elseprintf("%d*%d=%2d ", i, j, i*j);}printf("\n");}system("pause");return 0;
}
如果在判断处打印八个空格,就是右上三角形;
#include <stdio.h>
#include <windows.h>
int main()
{int i, j; for (i = 1; i <= 9; i++) {for (j = 1; j <= 9; j++) {if (j < i) printf(" "); elseprintf("%d*%d=%2d ", i, j, i*j); }printf("\n");}system("pause");return 0;
}
同样也可以去除类似2X3=6的部分式子,也会得到一个美丽的下方三角形;
//An highlighted blockvar foo = 'bar';
#include <stdio.h>
int main()
{int i, j, n; for (i = 1; i <= 9; i++){ //将下面的for循环注释掉,就输出左下三角形for (n = 1; n <= 9 - i; n++) printf(" "); for (j = 1; j <= i; j++) printf("%d*%d=%2d ", i, j, i*j);printf("\n"); } system("pause"); return 0;}
将标注的for循环注释掉,就输出左下三角形;
//An highlighted blockvar foo = 'bar';
#include <stdio.h>
int main()
{int i, j, n; for (i = 1; i <= 9; i++){ //将下面的for循环注释掉,就输出左下三角形//for (n = 1; n <= 9 - i; n++) // printf(" "); for (j = 1; j <= i; j++) printf("%d*%d=%2d ", i, j, i*j);printf("\n"); } system("pause"); return 0;}
对前期代码的升级打造相关推荐
- 暴风TV发布第二款AI无屏电视:六大升级打造投影旗舰
2018年1月15日,暴风TV宣布正式推出第二款暴风AI无屏电视产品--Real 6. 在上一款产品Max6的基础上,Real 6进一步升级了品质和工艺,6大升级打造人工智能投影旗舰产品.Real 6 ...
- 服务产业转型升级 打造产教融合创新平台——郭台铭、龚虹嘉一行考察国泰安
服务产业转型升级 打造产教融合创新平台--郭台铭.龚虹嘉一行考察国泰安 2019年1月10日,富士康科技集团创始人兼总裁郭台铭.嘉道资本董事长暨海康威视创始人龚虹嘉.富士康工业互联网董事长李军旗.富士 ...
- 低代码平台如何打造个性化督办管理系统
编者按:本文介绍了督办管理系统的概念,以粤运集团案例为引,分析了个性化督办管理系统和传统督办管理系统的区别,并进一步指出低代码平台在实现个性化督办管理系统方面的优势以及如何实践. 概要: (1)督办管 ...
- 腾讯智慧交通战略重磅升级 打造以人为中心的未来交通
在新基建加速布局下,智慧交通正在成为新基建的主力军,不仅可以助力新基建与传统基建融合,还将推动智慧城市建设,推动我国实现"交通大国"向"交通强国"的升级.9月1 ...
- 编译AVX代码,升级Redhat 5.5 GCC至4.7.1
Redhat 的GCC编译器4.1版本号,为SSE4,AVX,AVX2支持不够好,官方建议4.7以上. 就这样开始了GCC升级之路. 因为Redhat 5.5它安装在一个虚拟机.全然解决,经过若干尝试 ...
- python黑科技:Python大佬用20行代码带你打造一个微信聊天机器人,真神了~
如何用20行Python代码打造一个微信群聊助手? 1.安装python环境 2.安装python的itchat库 3.安装itchat库 4.Linux 5.申请图灵机器人API和key 6.编写p ...
- STM32F103代码远程升级(五)基于MQTT协议WiFi远程升级代码的实现
文章目录 一.WiFi模块的选用与介绍 二.ESP8266的固件擦除与烧写 1.ESP8266 Flash擦除工具的安装与使用. 2.ESP8266固件烧写 (1)在线获取固件文件 (2)获取SDK ...
- STM32F103代码远程升级(三)基于YModem协议串口升级程序的实现
文章目录 一.YModem协议简介 二.YModem的数据格式 1.起始帧的数据格式 2.数据帧的数据格式 3.结束帧的数据格式 4.文件传输过程 三.基于Ymodem协议串口升级程序的实现过程 1. ...
- “真快乐”APP改版开启2.0模式 “乐·购新升级”打造新零售变革样板
10月21日,以"乐·购新升级"为主题的"真快乐"APP改版试运营发布会在京召开.本次发布会上,"真快乐"APP改版试运营,重点打造&quo ...
最新文章
- VB.NET 数组的定义 动态使用 多维数组
- windows上编译zlib-1.2.8
- Centos7 开机启动汇总
- centos samba 看不到共享目录_samba共享服务
- 高德地图画带箭头的线_模具装配图画成这样,那才真的叫标准!
- 9008刷机教程oppo_OPPO和Realme手机刷机后内部存储不足,无法下载软件
- ros路由器l5和l6的区别_ESXI安装Mikrotik RouterOS(ROS)软路由部署指南(附授权镜像下载)...
- 最新版《神经网络和深度学习》中文版.pdf
- 数字图像取证:初学者手册
- scala安装与使用
- SAR图像的相干斑噪声
- 移动通信网络规划:误码率
- 转:宁愿在真实前颤抖,也不愿在催泪弹下哭泣(今何在)
- 【106】360查字体-查询本地字体版权是否可商用
- matlab中模型预测控制工具箱中m文件optimizer代码里面有个built in kalman 的选项
- 随笔感悟 — 函数封装
- tec控制pid程序_PID温度控制程序的一个疑问
- Arrays.copyOf()方法用法
- 选了combobox里的选项后没激发change事件_35岁前多用利弊分析,35岁后要有“安全边际”...
- TensorFlow on Android:训练模型
热门文章
- android连接打印机打印
- Skyline6.5系列覆盖三维地理信息产业上下游
- 计算机word排序行列怎么回事,Word快速调整行列顺序.doc
- gawk程序的简单使用
- Execution failed for task ‘:app:kaptDebugKotlin‘. > A failure occurred while executing org.jetbrains
- 栈与队列的定义与区别
- Python Flask框架学习
- 《深度思维》读后感与实践
- Python学习篇(五) Python中的循环
- 网络 链路层 | 以太网协议与ARP协议