标签:小小 计算机 int 32 代码 电脑 素数 include sum
位移相同,路程近点不好吗。一个好的程序员,不应该让计算机来给自己的失误买单。今天就从一个简单的算法分析程序员逻辑的重要性。
打印100-200之间的所有素数
#include<stdio.h> int main() { int i,j; int sum=0; for(i=100;i<=200;i++) { for(j=2;j<i;j++) { if(i%j==0) break; } if(j=i) { printf("%d ",i); sum++; } } printf("\nsum=%d",sum); return 0; }
这是求素数最正常的逻辑:试除法。
i除以从2到i-1的数,如果可以被整除就不是素数,或者就是素数。
那么我们可以想想,i的两个因子,假如把i分成一半,假如不是素数,两个因子一个在左边一个在右边,我们只需要判断一半的数据,就可以判断它是不是素数了。
那么我们在想,i开二次方根是不是与一半思维一样,但是方根小于一半数,数越大效果越明显。这样又砍掉一半数。
现在砍掉了多少,那么我们在想,偶数可能是一个素数吗,肯定不可能啊,i从一到两百咋把偶数都给砍掉。代码如下,效率不就有了
#include<stdio.h> #include<math.h> int main() { int i,j; int sum=0; for(i=101;i<=200;i+=2) { for(j=2;j<=sqrt(i);j++) { if(i%j==0) break; } if(j>sqrt(i)) { printf("%d ",i); sum++; } } printf("\nsum=%d",sum); return 0; }
结果是一样的,范围现在不大,你感觉计算机可能很轻松。
那我我们想想假如是要处理2的32次方个数据,计算机还会直接出来吗?
假如我们用了二分法,二的32次方从四亿个数据变到了32次。
计算机一般不会出现问题,当结果差强人意时,我们别再抱怨计算机了,看看自己的逻辑。
标签:小小,计算机,int,32,代码,电脑,素数,include,sum
来源: https://blog.51cto.com/u_15167093/2715798
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。