求解答!

vgfcjv 2010-05-21 09:43:59
仍然是输出素数的问题。。。
我用数组,值为0表示非素数,1表示素数,最后输出值为1的数组元素的下标这样不也可以求0到200范围内的素数么。。?
可为什么运行不对呢。。
#include<iostream.h>
#include<math.h>
void main()
{int k;
int prime(int);
int result[200];
for(k=0;k<200;k++)
{
result[k]=prime(k);
}
for(k=0;k<200&&result[k]==1;k++)
{
cout<<k<<" ";
}
}

int prime(int b)
{
int j; int status;
for(j=2;j<=sqrt(b);j++)
{
if(b%j!=0)
continue;
else
{
status=0;
break;
}

}
if(j>sqrt(b)) status=1;
return status;
}
...全文
74 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
vgfcjv 2010-05-21
  • 打赏
  • 举报
回复
没有 开始我也以为的 但运行出来是素数 因为j已经在for语句中被赋值2了 虽然没有执行循环语句

还是谢谢啦~![Quote=引用 8 楼 toma2008 的回复:]
int prime(int b)
{
int j; int status;
for(j=2;j<=sqrt(b);j++)
{
if(b%j!=0)
continue;
else
{
status=0;
break;
}

}
if(j>sqrt(b)) status=1;
return status;
}


……
[/Quote]
toma2008 2010-05-21
  • 打赏
  • 举报
回复
int prime(int b)
{
int j; int status;
for(j=2;j<=sqrt(b);j++)
{
if(b%j!=0)
continue;
else
{
status=0;
break;
}

}
if(j>sqrt(b)) status=1;
return status;
}



下面这段程序的问题

如果 K=2 就计算不出了
vgfcjv 2010-05-21
  • 打赏
  • 举报
回复
恩。。我也觉得写两个循环感觉就奇怪。。谢谢你的解答![Quote=引用 4 楼 zhzxlc_06 的回复:]
main()只写一个for循环,这样改:

C/C++ code
for(k=0;k<200;k++)
{
result[k]=prime(k);
if (result[k]) // 去掉第二个for循环,加一个if判断语句!
cout<<k<< endl ;
}
[/Quote]
vgfcjv 2010-05-21
  • 打赏
  • 举报
回复
是的~[Quote=引用 2 楼 lirg8405 的回复:]
for(k=0;k<200&&result[k]==1;k++)
{
cout<<k<<" ";
}
当result[k]==0的时候会退出,所以应该这样
for(k=0;k<200;k++)
{
if(result[k]==1)cout<<k<<" ";
}
[/Quote]
vgfcjv 2010-05-21
  • 打赏
  • 举报
回复
我知道了。。我那样当碰到非素数不满足条件就不做了 所以后面的都没了 谢谢~~[Quote=引用 1 楼 heartlesstoanyone 的回复:]
循环打印语句写错了,改成:

C/C++ code

for (k=0;k<200;k++)
{
if (1 == result[k])
cout<<k<< endl ;
}


就好了
[/Quote]
chaoliu1024 2010-05-21
  • 打赏
  • 举报
回复
main()只写一个for循环,这样改:
for(k=0;k<200;k++)
{
result[k]=prime(k);
if (result[k]) // 去掉第二个for循环,加一个if判断语句!
cout<<k<< endl ;
}
huanmie_09 2010-05-21
  • 打赏
  • 举报
回复
for(k=0;k<200&&result[k]==1;k++) //注意条件是逻辑与。
{
cout<<k<<" ";
}
lirg8405 2010-05-21
  • 打赏
  • 举报
回复
for(k=0;k<200&&result[k]==1;k++)
{
cout<<k<<" ";
}
当result[k]==0的时候会退出,所以应该这样
for(k=0;k<200;k++)
{
if(result[k]==1)cout<<k<<" ";
}
heartlesstoanyone 2010-05-21
  • 打赏
  • 举报
回复
循环打印语句写错了,改成:

for (k=0;k<200;k++)
{
if (1 == result[k])
cout<<k<< endl ;
}

就好了

64,637

社区成员

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

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