判断素数详解(从100-200中判断素数)

素数只能被1和本身整除,不是素数也能被1和本身整除,所以我们要从2-本身-1上遍历,能被2-本身-1整除说明不是素数

//从100-200判断素数
forint a =100;a<=200;a++)//循环产生100-200
{			int flag = 1;//利用flag判断是否为素数
	for(int j = 2;j<a;j++)
	{
		if (a%j==0)//能被整除不是素数
		{
				flag = 0;
				break;//不用全部计算,只要有一个能够整除不是素数所以加上一个break跳出循环,执行下一个循环
		}
	if (flag)//flag为1,打印素数
	{
		printf("%d",a);
	}
}

偶数一定不是素数(除了2),例如16一定能被1,2,4,8,16,所以我们就遍历奇数就可以

forint a =100;a<=200;a+=3)//循环产生100-200
{			int flag = 1;//利用flag判断是否为素数
	for(int j = 2;j<a;j++)
	{
		if (a%j==0)//能被整除不是素数
		{
				flag = 0;
				break;//不用全部计算,只要有一个能够整除不是素数所以加上一个break跳出循环,执行下一个循环
		}
	if (flag)//flag为1,打印素数
	{
		printf("%d",a);
	}
}

还有我们不需要从2-本身-1遍历,我们只需要从2-本身开根号,例如拿16举例,它可以4×4=16,2×8=16,16的因子为2 4 8,我们从2-本身-1遍历就是为了找因子,(a,b为它的因子)假设a*b=c,它就一定满足a或b小于等于根号c,看上面16举例就很好理解了,所以我们遍历从2-本身开根号就能判断是否为素数

#include
#include//使用sqrt()函数要到的头文件
int main()
{
 for(int a = 100;a<=200;a++)
 {		int flag = 1;
 	for(int j=2;j<=sqrt(a);j++)/sqrt()表示开平方
 	{
 		if(a%j==0)
 		{
 			flag = 0;
 			break;
 		}
 		if (flag)
 		printf("%d",a);
 		
 	}
 	return 0;
 }
 	
 		

你可能感兴趣的:(算法,数据结构,c语言,经验分享,笔记)