用c语言输出100到200之间的素数

问题描述:

用c语言输出100到200之间的素数

问题分析:

素数,就是可以整除的数只有1和它本身的数为素数,因此可以通过取数字和他进行余数计算,累计余数等于0的数量,如果数量大于2,就不是素数,如果等于2,就是素数,又已知,偶数肯定不是素数,所以只要取奇数进行校验即可,又已知,如果一个大于这个数的一半的数肯定不可以整除该数,因此只需要验证从2到这个数的一半时即可,并且期间如果一但累计可整除数量大于1,就可以结束验证,直接判断该数为非素数。

代码段

定义变量

	int n = 100;//初始验证数字
	int m = 200;//截止验证数字
	int loop = 0;//循环变量
	//int a = 0;//中间过度值1
	int b = 0;//中间过度值2
	//int loop1;
	int c = m - 1;//中间过度值3

核心算法

	for (n = 101;n<= c; n+=2)//由题目已知,100和200都是非素数,所以从101开始验证,到199结束即可,然后每验证一次n加2,以保证每次只验证奇数,降低时间复杂度
	{
		
		b = n / 2;//验证循环最大结束标质,因大于验证数一半的数肯定不是可整除数(除其自身外)因此这些数可省略
		for (loop = 2; loop<=b; loop++)//循环验证从2开始,到最大验证数的一半结束每循环一次加1
		{
			if (n % loop == 0)//判断是否可以被整除,
			{
				break;//若有可被整除数,直接结束循环,该数非素数
			}
            if(loop==n/2)
				printf("%d\n", n);//若loop循环到最后还是没有数可整除该数,则该数为素数,打印该数
		}
	}

完整代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>


int main()
{
		int n = 100;
		int m = 200;
		int loop = 0;
		//int a = 0;
		int b = 0;
		//int loop1;
		int c = m - 1;
	for (n = 101;n<= c; n+=2)
	{
		//a = 0;
		b = n / 2;
		for (loop = 2; loop<=b; loop++)
		{
			if (n % loop == 0)
			{
				break;
			}
			//loop += 1;
		/*	if (a == 2)
				break;*/
			if (loop == n / 2)
				printf("%d\n", n);
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值