为什么这个程序输入2的时候也判断为素数?j的循环初始值为2,能把2整除,flag变为1,不就判断为不是素数了吗?
2条回答 默认 最新
- a5156520 2023-04-13 08:53关注
因为判断2时,不会进入第16行那个for循环,因为2<2这个for循环条件不满足,所以不会进入for循环内,然后2就被判断为素数(可以在此for循环内打印每一次a[i]的数值观察下)。
然后根据定义,2是素数。
测试代码如下:
参考链接:https://baike.baidu.com/item/for%E5%BE%AA%E7%8E%AF/5755435?fr=aladdinhttps://baijiahao.baidu.com/s?id=1711778710393832660&wfr=spider&for=pchttps://baike.baidu.com/item/%E8%B4%A8%E6%95%B0/263515#include <stdio.h> int main(void){ int a[10]; float sum; int i,j,k,b=0; for(k=0;k<10;k++){ scanf("%d",&a[k]); } for(i=0;i<10;i++){ int flag=0; //素数标志,默认0表示是素数 if(a[i]<2){ flag=1; } for(j=2;j<a[i];j++){ // 当a[i]等于2时,这个for循环不会进入循环, 所以2被判断为是素数 // if(j==2){ // printf("a[%d]=%d\n",i,a[i]); // } sum=a[i]%j; if(sum==0){ flag=1; break; } } if(!flag){ b++; // printf("%d: a[%d]=%d\n",b,i,a[i]); } } printf("%d",b); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 wegame打不开英雄联盟
- ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
- ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
- ¥30 eclipse开启服务后,网页无法打开
- ¥30 雷达辐射源信号参考模型
- ¥15 html+css+js如何实现这样子的效果?
- ¥15 STM32单片机自主设计
- ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
- ¥15 不小心不正规的开发公司导致不给我们y码,
- ¥15 我的代码无法在vc++中运行呀,错误很多