打印100到200之间的素数

素数的定义是除了1和它本身,不能被其他数整除。最简单的方法就是把1和它自己之间的数全都遍历一遍。代码如下:

#include <stdio.h>
int main()
{
int i = 0;
int j = 0;


for (i = 100; i <= 200; i++)
{
for (j = 2; j < i; j++)
{
if (i%j == 0)
{
break;
}
}


if (i == j)
{
printf("%d\n", i);
}
}
system("pause");
return 0;

}

上述方法有个缺点就是效率太低,虽然说是短短几行代码看不出来效率,但若是在大型工程中,太耗费时间,接下来对它进行优化。求100到200之间的素数,可以把100到200之间的偶数全部排除,遍历的数据少了一半,效率就提高了二倍。代码如下:

int main()
{
int i = 0;
int j = 0;

for (i = 101; i <= 200; i += 2)
{
for (j = 2; j < i; j++)
{
if (i%j == 0)
{


break;
}
}


if (i == j)
{
printf("%d\n", i);
}
}
system("pause");
return 0;

}

如果再要对其进行优化,可以思考一下下面的知识。

假如m=a*b   则a和b中至少有一个数字小于√m。举个栗子:m=4*4=2*8     2到√m中没有能被整除的,则√m到m中也没有。所以对其优化的代码如下:

int main()
{
int i = 0;
int j = 0;


for (i = 100; i <= 200; i++)
{
for (j = 2; j <=sqrt(i); j++)
{
if (i%j == 0)
{
break;
}
}
if (j > sqrt(i))
{
printf("%d\n", i);
}
    }
system("pause");
return 0;
}


阅读更多
文章标签: 打印素数
上一篇机械转行IT
下一篇打印1000到2000之间的闰年
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭