小白求助,switch被跳过了,case值已经取到

D.Fu 2018-01-24 01:03:23
#include<stdio.h>
int main()
{
int x=0,n=0,isprime=1;
for(x=2;x<101;x++){
for(n=2;n<x;n++){
if(x%n==0){
isprime=0;
break;
}

}
switch(isprime){
case 0:
break;
case 1:
printf("%d是素数\n",x);
break;

}
}
return 0;
}


...全文
417 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
D.Fu 2018-03-11
  • 打赏
  • 举报
回复
谢谢,各位大神。
x_xx_xxx_xxxx 2018-01-24
  • 打赏
  • 举报
回复
有很多素数筛法,可以网上搜搜,当前的效率并不高。
x_xx_xxx_xxxx 2018-01-24
  • 打赏
  • 举报
回复
附上代码,问题在注释中讲了

#include<stdio.h>
int main()
{
int x=0,n=0,isprime=1;
for(x=2;x<101;x++)
{
isprime=1;// 你的代码中,只要 isprime 置 0 后,就再也没机会置 1

for(n=2;n<x;n++)
{
if(x%n==0)
{
isprime=0; // 置 0 代表非素数,要记得在初始位置,初始化 isprime 的值
break;
}

}

switch(isprime)
{
case 0:
//isprime=1; //在这里也可以;
break;
case 1:
printf("%d是素数\n",x);
break;
}
}
getchar();
return 0;
}


hkxh 2018-01-24
  • 打赏
  • 举报
回复
else{isprimer=1;}
  • 打赏
  • 举报
回复
爱因斯坦也无法解决的问题.当a=g时,m=0;e=mc^2;
  • 打赏
  • 举报
回复
加速度大到无法想象!
  • 打赏
  • 举报
回复
当a=g时,飞船进入预定轨道,发射成功!
nobSlience 2018-01-24
  • 打赏
  • 举报
回复
运行到3时,isprime就一直是0,导致你后面就无法运行了,第一层for里面,每次初始化isprime=1试试
D.Fu 2018-01-24
  • 打赏
  • 举报
回复
编译运行后只能取到2和3就结束了

64,686

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧