0
点赞
收藏
分享

微信扫一扫

打印素数的方法和优化

yongxinz 2022-04-13 阅读 65
c++

打印100-200的素数

#include <stdio.h>
int main()
{
	int i = 0;
	int count =0;
	for(i=100;i<=200;i++)
	{
		//判断i是不是素数
		//素数判断的规则
		//1.试除法
		//13 2-12
		//产生2->i-1
		int j=0;
		for(j=2;j<i;j++)
		{
			if(i%j==0)
			{
				break;
			}
		}
		if(j==i)
		{
			count++;
			printf("%d ",i);
		}
	}
	printf("\ncount = %d\n",count);
	return 0;
}

对于上面的方法,从1到n尝试,效率太慢,可以采取下面的优化方法

#include <stdio.h>
#include <math.h>
int main()
{
	int i = 0;
	int count =0;
	for(i=100;i<=200;i++)
	{
		//判断i是不是素数
		//素数判断的规则
		//1.试除法
		//13 2-12
		//产生2->i-1
		int j=0;
		for(j=2;j<=sqrt(i*1.0);j++)//用pow(i,0.5)可以
		{
			if(i%j==0)
			{
				break;
			}
		}
		if(j>sqrt(i*1.0))
		{
			count++;
			printf("%d ",i);
		}
	}
	printf("\ncount = %d\n",count);
	return 0;
}

进一步的优化偶数问题

#include <stdio.h>
#include <math.h>
int main()
{
	int i = 0;
	int count =0;
	for(i=101;i<=200;i+=2)//偶数不可能
	{
		int j=0;
		for(j=2;j<=sqrt(i*1.0);j++)
		{
			if(i%j==0)
			{
				break;
			}
		}
		if(j>sqrt(i*1.0))
		{
			count++;
			printf("%d ",i);
		}
	}
	printf("\ncount = %d\n",count);
	return 0;
}
举报

相关推荐

0 条评论