先贴一个简陋的程序
#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; }