为什么这个程序输入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 TLS1.2协议通信解密
- ¥40 图书信息管理系统程序编写
- ¥20 Qcustomplot缩小曲线形状问题
- ¥15 企业资源规划ERP沙盘模拟
- ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
- ¥15 前端echarts坐标轴问题
- ¥15 ad5933的I2C
- ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
- ¥15 数学建模求思路及代码
- ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题