int main()
{
int i = 0;
for (i = 100; i <= 200; i++)
{
// printf("%d", i);打印100到200的数
int flag = 1;//假设i是素数
int j = 2;
for (j = 2; j <= i - 1; j++)
{
if (i % j == 0)//表明i不是素数
{
flag = 0;
break;
}}
if (flag == 1)
printf("%d ", i);}
return 0;
}
思考:定义了三个变量,i,j,flag,为什么要定义后两个变量只定义i与j不行吗
想法:
找出100~200中的素数
素数定义:只能被1和本身整除
数学形式上看
()/()=结果(商)
想要知道一个数是否是素数有两个自由度
即被除数与除数,当这两个自由度被确定后,我们显然知道被除数是否是素数
那么怎么用编程实现这一想法呢
首先大致思考一下我们要定义几个变量
至少是两个吧
如果要问为什么
先简单理解一下变量
变量是指在c语言中存储数据的容器
很明显被除数与除数需要分开用两个变量存储起来
int main()
{
int i = 0;
int j = 0;
for (i = 100; i <= 200; i++)
{
for (j = 2; j <= i - 1; j++)
{
if (i % j == 0)
{
printf("%d ", i);
break;
}}
}
return 0;
}
感觉有点奇怪
我们想打印的是素数,但在两个变量的情况下我们只能打印非素数的数
不要简单的以为
if (i % j != 0)
这样改就行了,所以问题来到了为什么要定义变量flag
来到数学形式上看
()/()=结果(商)
判断一个数是否为素数,当被除数与除数确定后,还要进行判断,数学上结果肯定是我们自己判断(它是素数与否)
但计算机不知道啊
所以我们还需要定义一个flag来表示判断结果的真假
flag存储的就是1(素数)和0(非素数)
这样计算机就能得知它是否为素数