这是我们初识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 是合数,所以程序无法输出任何数字!
生成效果图:
注意:生成框内的字母与程序本身无关