写判断素数程序时遇到的小问题

来源:互联网 发布:键盘检测软件 编辑:程序博客网 时间:2024/04/30 02:26

先贴一个简陋的程序

#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");elseprintf("No!\n");return 0;}



原创粉丝点击