C语言,输入x,y,输出其范围内所有的素数,这个哪里有问题呢,输出了一列3.....求大神指导啊!!

#include<iostream>usingnamespacestd;intsushu(intx,inty){inti;for(i=x+1;i>x&&i<y;i++){... #include <iostream>
using namespace std;
int sushu(int x, int y)
{
int i;
for (i = x + 1; i > x && i < y; i++)
{
int m = 2;
for (;m > 1; m++)
{
if (i % m == 0)
break;
if (m == i - 1)
{
return i;
break;
}
}
}
}

int main()
{
int a, b , i;
cin >> a >> b;
i = a + 1;
while (i > a && i < b)
{
cout << sushu(a, b) << endl;
i++;
}
getchar();
getchar();
return 0;
}
展开
 我来答
geniepengsz
2015-11-10 · TA获得超过2万个赞
知道大有可为答主
回答量:1.2万
采纳率:97%
帮助的人:2263万
展开全部

调试了一下,问题主要在子函数int sushu(int x, int y)逻辑与主程序有冲突,并有处理混乱的地方。

修改代码和注释如下:

#include <iostream>

using namespace std;

//int sushu(int x, int y)

int sushu(int x)

{

 //int i;

 //for (i = x + 1; i > x && i < y; i++)//主程序已经处理,冗余

 {

  int m = 2; 

  //for (;m > 1; m++)  //逻辑混乱

  for (;m < x; m++)

  {

   if (x % m == 0)

    break;

   if (m == x - 1)  

   {

    return x;

    break;

   }

  }

 }

 return 0;//增加一个返回值(非素数)分支

}

int main()

{

 int a, b , i; 

 cin >> a >> b;

 i = a + 1; 

 while (i > a && i < b)

 {

  if(sushu(i)!=0)  //判断是素数,则输出

   cout << sushu(i) << endl;

  i++;

 }

 getchar(); 

 getchar();

 return 0;

}

在VC6调试通过,运行如下:

供参考。

百度网友68b3033
2015-11-10 · TA获得超过205个赞
知道小有建树答主
回答量:508
采纳率:0%
帮助的人:193万
展开全部
把int m=2放到外面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式