其他分享
首页 > 其他分享> > 小小改进代码效率,让电脑跑的更快

小小改进代码效率,让电脑跑的更快

作者:互联网

位移相同,路程近点不好吗。一个好的程序员,不应该让计算机来给自己的失误买单。今天就从一个简单的算法分析程序员逻辑的重要性。

打印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