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;
} 展开
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;
} 展开
展开全部
调试了一下,问题主要在子函数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调试通过,运行如下:
供参考。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询