为什么这个程序一直输出0啊?

运行后不断地输出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而不是小于等于

img

img

#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;
 }