C语言中基于将素数打印在屏幕上的两种错误案例 - 详解
在C语言中,比如我们要打印1~1000的素数;那么我们允许怎样将这些素数打印在屏幕上?
素数,还有很多种方法,具体这里就不一一介绍了,想要深入了解的话可以精读《素数求解的N种境界》就是比如说我要判断501是不是素数,那我们是不是可以用2~500的数字对它进行整除,若余数为0,即不为素数,否则这个数字就
# include <stdio.h>
int main()
{
int i = 0;
for (i = 1;i <= 1000;i++)
{
int j = 0;
int flag = 1;//假设是素数
for (j = 2;j <= i - 1;j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
{
printf("%d ", i);
}
}
return 0;
}
这是其中的一种手段,对于初学者而言,在这里我们敲代码的时候会发现有时屏幕上显示的并不是我们想要的结果,那这里我将为大家介绍一下目前我所遇到的几种经典案例
就跳出循环:就是1.上述代码中,我们给定了一个整型变量flag用来判断是否为素数,假设是就打印,不
if (flag == 1)
{
printf("%d ", i);
}
这边的flag==1是用于判断相不相等,初学者可能把它写成flag=1,==是用于表示判断,而=则是赋值,这边的逻辑就是用来判断它相不相等的,如果flag还是1,那就证明没有进入if(i%j==0)语句里面,说明还是一个素数
2.else的错误使用
if (i % j == 0)
{
flag = 0;
break;
}
这是初学者有可能会犯的一种错误,在这个if后面添加else(i%j!=0的情况),然后直接打印到屏幕上,这是典型的错误案例,举一个例子,比如我要判断9是不是素数,大家都知道9肯定不是素数,但这里我一开始执行9%2,很显然它的余数是1,并不等于0,这边就只能执行else语句,将结果打印到屏幕上,很显然出现了错误,于是说我们要学会分析,并不是if后面一定就要跟else if/else语句。
以上就是目前我所遇到的两种典型的错误案例,希望能帮助大家,谢谢!

浙公网安备 33010602011771号