先贴一个简陋的程序
#include <stdio.h>
int main (void)
{
int val;
int i;
scanf ("%d", &val);
for (i = 2; i < val; i++)
{
if (val % i == 0)
{
printf ("not prime.\n");
break;
}
}
if (i == val)
printf ("is prime.\n");
return 0;
}
运行结果如下图
问题应该很明显,i从0开始了。而0是不能做为除数的,我想搞明白的是计算机内部硬件遇到除数为0时会做怎样的处理。操作系统停止程序工作的原理。
此程序还有一个问题是,对于1没法作出判断,如果改为以下程序,就可以巧妙解决这个问题
# include <stdio.h>
int main(void)
{
int val;
int i;
scanf("%d", &val);
for(i=2; i<val; i++)
{
if (val%i == 0)
break;
}
if (i == val)
printf("Yes!\n");
else
printf("No!\n");
return 0;
}