素数求解的N种境界!!!

素数求解的N种境界

  • 境界1
  • 境界2
  • 境界3
  • 境界4

下面以找出100~200素数为例

境界1

正常筛选法

#include
int main()
{
	int i;
	for (i = 100; i <= 200; i++)
	{
		int j ;
		for(j = 2 ; j < i; j++)
		{
			if (i % j == 0)
				break;
		}
		if (j == i)
			printf("%d ",i);
	}
	return 0;
}

境界2

for (i = 101; i <= 200; i += 2)//除二以外的素数都是奇数
//调整开始查找数字,调节每次的增量

境界3

数学中证明了 找出一个数i的素数只需,看 2 ~ i / 2 中
是否有 i可以整除的数字,若有,i就是非素数,反之就是素数

#include
int main()
{
	int i;
	for (i = 101; i <= 200; i += 2)
	{
		int j ;
		for(j = 2 ; j < i / 2; j++)
		{
			if (i % j == 0)
				break;
		}
		if (j == i / 2)
			printf("%d ",i);
	}
	return 0;
}

境界4

数学中证明了找出一个数i的素数只需,看 2 ~ 开平方i
范围比 i / 2更加准确,查找次更加少,计算机运算效率更高
中是否有 i可以整除的数字,若有,i就是非素数,反之就是素数

#include
#include
int main()
{
	int i;
	for (i = 101; i <= 200; i += 2)
	{
		int j ;
		for(j = 2 ; j < (int)sqrt(i); j++)//103 -- 51
		{
			if (i % j == 0)
				break;
		}
		if (j == (int)sqrt(i))
			printf("%d ",i);
	}
	return 0;
}

你可能感兴趣的:(C,程序设计)