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

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

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

#include
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 循环里面对其进行赋值。假设我们在外部进行赋值就会出现以下结果:【C语言】利用两个for循环来解决100~200之间的素数问题_第1张图片

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

你可能感兴趣的:(C语言学习心得,c语言)