题目
判断 101 到 200 之间的素数。素数是只能被1和自身整除的正整数。
实现的思路
- 使用两层循环来遍历101到200之间的所有整数,外层循环变量
i
代表当前要判断的整数,内层循环变量j
代表用来尝试整除i
的除数。 - 内层循环从2开始,直到
j
小于i
,这是因为任何数除以自身都是1,所以不需要检查到i
本身。 - 如果
i
能够被j
整除(即i%j==0
),则跳出内层循环,因为这意味着i
不是素数。 - 如果内层循环正常结束(即没有触发
break
),那么j
的值将会是i
,此时i
就是素数,因此输出i
。
代码(包含解析)
#include <stdio.h>
int main(){
int i, j; // 只需要两个循环变量i和j,k变量未使用,可以移除
for(i=101; i<=200; i++){ // 外层循环,遍历101到200之间的所有整数
for(j=2; j<i; j++){ // 内层循环,尝试整除i的除数从2开始,直到小于i
if(i%j==0) break; // 如果i能够被j整除,则i不是素数,跳出内层循环
}
if(j==i) printf("%d\n", i); // 如果内层循环正常结束,说明i是素数,输出i
}
}
代码解读
- 代码首先包含了标准输入输出头文件
stdio.h
,这是为了使用printf
函数。 main
函数是程序的入口点。- 程序中定义了两个整型变量
i
和j
,分别用于外层循环和内层循环。 - 外层循环变量
i
从101开始,到200结束,代表当前要检查的数。 - 内层循环变量
j
从2开始,到i-1
结束,代表尝试整除i
的除数。 if(i%j==0) break;
这行代码检查i
是否可以被j
整除。如果可以,break
语句会立即终止内层循环。if(j==i) printf("%d\n", i);
这行代码检查内层循环是否因正常结束而退出(即j
达到i
的值)。如果是,则输出i
,因为它是一个素数。