C:打印100~200间的素数

124 阅读1分钟

这是我们初识C语言难免会遇到的一个问题,此处给大家解释一下!

素数定义:
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。

程序代码:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main()
{
	int i, n, tmp;
	int flag = 0;
	
	for (n = 100; n <= 200; n++)//遍历数的范围
	{
		tmp = sqrt(n);//sqrt()用于求数的开平方。
		for (i = 2; i <= tmp; i++)//引用tmp变量是为了避免每次进入for循环都要重新计算一次!
		{
			if (n % i == 0)
			{
				flag = 1;
				break;//判断如果数有除1和自身外的其他因数,则跳出循环
			}
		}
		if (flag != 1)
		{
			printf("%d\n", n);
		}
		flag = 0;//每个数判断完成后必须归0,否则从第一个是合数的开始,程序不输出任何数。
	}
	system("pause");
	return 0;
}

程序生成:
在这里插入图片描述

如果 flag 在外层 for 循环执行一次后未清零的话,在第一次检验到合数的时候 flag 会置 1 导致后续的数字无法检验!
而上面程序中第一次 for 循环检验的是数字 100。因为 100 是合数,所以程序无法输出任何数字!

生成效果图:

注意:生成框内的字母与程序本身无关