c关于素数的输出。。
来源:互联网 发布:增加勃起硬度知乎 编辑:程序博客网 时间:2024/06/05 11:26
看到这个题目时,学过c的估计都会轻松一笑,觉得很简
单,不就素数的输出嘛,有什么可说的,但就这么个简单的问
题,可以有多种处理办法,瞬时让自己的逼格升级很多。对于
初学c的朋友们可以借鉴下哦!希望能够共同能够进步。
一、首先,我们还是先来回顾下素数的概念:
素数:是指除了能被1和它本身整除,不能被其它任何整数整除的数。
二、知道了什么是素数,那么接下来就得思考用c语言怎么把
一个范围内的素数输出来:
显然,对于一个数我们可以让它去模2到这个数之间的值,如果这个期间有模
下来的结果为零,那么它就必然不是素数。
三、我们举个例子
例:输出100-200之间的素数。
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for(j = 100; j < 200; j++) //j表示100-200的素数
for(i = 2; i < j; i++)
{
if(j%i == 0)
{
break;
}
if(i+1 == j)
{
printf("%d ",j);
}
}
printf("\n");
return 0;
}
这就是我们分析题目后可以写出的最简单的或者说什么都不考虑,顺着思维自然而然的写出来的代码。
!!! 所以接下来我要说的第四步就是升级逼格,写出让高质量运行效率高的代码。
四、升级逼格(还是上面的例子)
1、我们想一下输出100-200之间的素数,那偶数肯定不是素数啦,那么在循环的时候,我们对于for里面i调整环节即i++可以改成i+2,但是不要忘了i的初始化,就不能为100了,将它改为101,那么这样一来我们把100-200之间的偶数跨过去,效率自然就提高啦。代码就变成了这样:
#include<stdio.h>
int main()
{
int i = 0,j = 0;
for(j = 101;j < 200;j+=2) //j表示100-200的素数
for(i = 2;i < j;i++)
{
if(j%i == 0)
{
break;
}
if(i+1== j)
{
printf("%d ",j);
}
}
printf("\n");
return 0;
}
2、然后我们有了第一步,接着我们肯定在想还可不可以优化下程序。既然我们有把偶数跨过去,肯定有朋友想到,那也可以将上述中j的范围缩小一半进行查询,即j/2。这个当然很不错,那其实和上面的是一样的道理,不同的方式罢了。那还有方法吗?
这个时候,我们可以想到,既然有除法,那开方行不行呢,当然没问题,是个非常棒的方法呢,省去了很多不必要的重复的循环。这样运行效率就大大提高啦。下面就是我们优化后的代码:
#include<stdio.h>
#include<math.h>
int main()
{
int i = 0,j = 0;
for(j = 101; j < 200; j+=2) //j表示100-200的素数
{
for(i = 2; i < sqrt(j); i++)
{
if(j%i == 0)
{
break;
}
}
if(i>sqrt(j))
{
printf("%d ",j);
}
}
printf("\n");
return 0;
}
我想大家应该会有所收获和启发,虽然是小小的程序,可能我们没有办法一次性就写出高质的的最优的代码,但是这篇博客也是给大家一点鼓励,我们不管程序有多大,一步一步进行分析,最终找出最优的方法,写出很棒的代码。
温馨提示:记得写代码的时候给变量初始化哦!养成好的习惯哟!
- c关于素数的输出。。
- 关于素数 的c程序
- 关于素数的c程序
- c、c++关于质数||素数的求法
- c++:输出小于1000的所有孪生素数
- c/c++ 算法之 输出1~1000之间的素数
- C 输出a和b之间的素数
- C 输出100到200之间的素数
- 【c语言】将100~200之间的素数输出
- 用c输出100--200之间的素数
- 【C语言】编写函数实现:100-200素数的输出
- c初学100~200的素数输出(部分优化)
- 用c语言输出100到200之间的素数
- 输出素数的二进制
- C语言编程——输出100—200之间的所有素数和非素数
- C语言如何判断一个数是素数,输出100-200之间的全部素数。
- C语言 素数判断,输出100以内的素数,用逗号分隔,第一个逗号不输出
- 主要关于C的标准化输输出
- 体外诊断(POCT)之系统配置文件修改
- Android:控件布局(相对布局)RelativeLayout
- Android自定义View的实现方法,带你一步步深入了解View
- Convert Sorted List to Binary Search Tree 链表转成二分搜索树
- 日期工具类DateUtils
- c关于素数的输出。。
- C++析构函数为什么要为虚函数
- unity开发-高通Ar
- Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)
- float & double & 格式化输出
- sqlserver中判断表或临时表是否存在
- mp4a box 解析
- C++面向对象基础知识详解一
- DUBBO环境搭建