运行后不断地输出0,但是找不出错误
#include
int main()
{
int ibegin,iend;
int count=0,i,j,flag;//flag=1时为素数
scanf("%d %d",&ibegin,&iend);
for(i=ibegin;ibegin<=iend;i++)
{
flag=1;
if(i=0||i==1)
{
flag=0;
}
for(j=2;j<=i;j++)
{
if(i%j==0)
{
flag=0;
break;
}
}
if(flag==1)
{
printf("%5d",i);
count++;
if(count%6==0)
printf("\n");
}
}
return 0;
}
所以哪里出了问题啊?求解答
循环终止表达式begin<=iend有问题,如果begin小于iend就一直死循环了 begin每次循环都没有变化,应该改为i<=iend
if(i=0||i==1)有问题应该改为i==0否则每次i都为0 flag每次都是1 每次都会打印i 也就是结果为0
for (i = ibegin; ibegin <= iend; i++)
这句有问题,应该是 for (i = ibegin; i <= iend; i++)
if(i=0 || i==1)
这句也有问题,应该是 if(i==0 || i==1)
`
你的代码在判断素数的逻辑上也有问题,我把改好的发给你
#include <stdio.h>
int main()
{
int ibegin, iend;
int count = 0, i, j, flag; // flag=1时为素数
scanf("%d %d", &ibegin, &iend);
for (i = ibegin; i <= iend; i++)
{
flag = 1;
if (i == 0 || i == 1)
{
flag = 0;
}
else
{
for (j = 2; j * j <= i; j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
}
if (flag == 1)
{
printf("%5d", i);
count++;
if (count % 6 == 0)
printf("\n");
}
}
return 0;
}
for (i = ibegin; i <= iend; i++) 不然死循环 ,循环里边 ibegin的值没变
两个等号 ,j<i而不是小于等于
#include <stdio.h>
int main()
{
int ibegin,iend;
int count=0,i,j,flag;//flag=1时为素数
scanf("%d %d",&ibegin,&iend);
for(i=ibegin;i<=iend;i++)
{
flag=1;
if(i==0||i==1)
{
flag=0;
}
for(j=2;j<i;j++)
{
if(i%j==0)
{
flag=0;
break;
}
}
if(flag==1)
{
printf("%5d",i);
count++;
if(count%6==0)
printf("\n");
}
}
return 0;
}