【C语言】利用两个for循环来解决100~200之间的素数问题

实现素数问题我们首先要明确何为素数:又称质数,是指在大于1的自然数中,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为素数(质数)。比1大但不是素数的数称为合数,1和0既非素数也非合数。

接下来我们用C语言的for循环嵌套来显示100~200之间的素数。

#include<stdio.h>
int main()
{
	int a, b;
	int m;

	for (a = 101;a <= 200;a++)
	{
		for (b = 2;b < a;b++)
		{
			m = 1;
			if (a % b == 0)
			{
				m;
				break;
			}
			else
			{
				m = 0;
			}
		}
		if (m == 0)
		{
			printf("%d是素数\n", a);
		}
		else
		{
			printf("%d不是素数\n", a);
		}
	}
}

我们的解决问题的思路是利用嵌套 for 循环,然后用一个全局变量m是否为 1 来判定a是否为素数。要注意的是在全局定义了 m 以后我们要在第二个 for 循环里面对其进行赋值。假设我们在外部进行赋值就会出现以下结果:

我们对代码进行调试以后发现,造成这样的原因是因为代码在执行完 m = 0 这条语句以后,m的值就一直为0,因为我们没有对 m 在循环内进行重新赋值,所以就导致了不管 a 是否为素数,结果都会输出为素数。所以正确的解决办法就是在第二个for循环里面我们进行对 m 进行初始化,使其每次进入循环的值都为 1 。这样就能成功地利用两层for循环来解决100~200之间的素数问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值