码迷,mamicode.com
首页 > 其他好文 > 详细

打印100~200 之间的素数

时间:2015-11-29 19:45:01      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:素数   源代码   获取

编写思想:对100到200之间的数依次进行for循环判断,看其是否为素数。判断方法:对于一个自然数,除了1以外,不是素数就是合数。若该数字是素数,则不能被除了1和它自身以外的数整除;而一个数如果是合数,则它的所有因子不会大于对其开根号所得出的数,由此可得出每个数最多时候的循环次数。

初次生成的源代码如下:

#include<stdio.h>
#include<math.h>
int main()
{
	int primer,variabe,sign;
	for(primer=101;primer<201;primer++)
	{
		for(variabe=2;variabe<=sqrt(primer);variabe++)
		{
			sign=0;
			if(primer%variabe==0)  break;
			else  sign=1;
		}
		if(sign==1)
		printf("%-5d",primer);
	}
	return 0;
}

运行结果如下:

101   103   107   109   113   127   131   137   139   149   151   157   163   167

173   179   181   191   193   197   199

由于以上程序产生了一些不必要的循环,增加了程序的时间复杂度,故而对其进行了改进。

改进1:去掉了标志变量sign,减少了内存的占用;

改进2:由于找的是100到200之间的素数,因此其间的偶数均不必进行判断,故而只剩下奇数,又由于奇数肯定无法被偶数整除,故而去掉variable中的偶数循环,降低了程序的时间复杂度。

改进后的代码如下:

#include<stdio.h>
#include<math.h>
int main()
{
	int primer,variabe;
	for(primer=101;primer<201;primer+=2)
	{
		for(variabe=3;variabe<=sqrt(primer);variabe+=2)
		{
			if(primer%variabe==0)  
			    break;
		}
		if(variabe>sqrt(primer))
		printf("%-5d",primer);
	}
	return 0;
}

运行结果同上一致:

101   103   107   109   113   127   131   137   139   149   151   157   163   167

173   179   181   191   193   197   199


打印100~200 之间的素数

标签:素数   源代码   获取

原文地址:http://lookforward2.blog.51cto.com/10912915/1717920

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!