注册 登录
编程论坛 C语言论坛

为什么在i=y的时候不退出循环 而继续运行?? 大佬们哪里出错了

WAN_N 发布于 2020-09-27 23:16, 1306 次点击
int main()//这是一个求绝对素数的  我首先判断它是不是素数 然后嵌套判断他的逆序数是不是素数
{
    int i,t,a,y=0;
    scanf("%d",&a);
    if(a<=10)
        printf("%d不是绝对素数1\n",a);
    else
    for(i=2;i<a;i++)
    {
        if(a%i==0)
        {
        
            printf("%d 不是绝对素数2\n",a);
            break;
        }
        else if(i==a-1)
        {
            t=a;
            while(t>0)
            {
            
                y=y*10+t%10;
                t=t/10;
            }
            for(i=2;i<y;i++)
            {
            
                if(y%i==0)
                {
               
                    printf("%d 不是绝对素数3\n",a);
                    printf("%d %d\n",i,y);
                    break;
                }
                else if(i==y-1)
                    printf("%d是绝对素数\n",a);
            }
        }

    }
return 0;

}

输入31
31是绝对素数
31 不是绝对素数3
13 1313
31 不是绝对素数3
3 131313
31 不是绝对素数3
13 13131313
31 不是绝对素数3
13 1313131313
31 不是绝对素数3
7 1598107441
31 不是绝对素数3
23 896954161
31 不是绝对素数3
3 1649897265
31 不是绝对素数3
5 1780969265
31 不是绝对素数3
97 2003267377
3 回复
#2
WAN_N2020-09-27 23:50
在最后一个for循环中 i会干扰那个前面if语句中的i  但是我不知道它是怎么运行的  干扰的过程
#3
WAN_N2020-09-27 23:52
是不是   那个i重新赋值后再第一个for循环中进行判断 就不会结束陷入了循环
#4
纯蓝之刃2020-09-28 08:39
程序代码:
int main()//这是一个求绝对素数的  我首先判断它是不是素数 然后嵌套判断他的逆序数是不是素数
{
    int i,j,t,a,y=0;
    scanf("%d",&a);
    if(a<=10)
        printf("%d不是绝对素数1\n",a);
    else
        for(i=2;i<a;i++)
        {
            if(a%i==0)
            {
                printf("%d 不是绝对素数2\n",a);
                break;
            }
            else if(i==a-1)
            {
                t=a;
                while(t>0)
                {
                    y=y*10+t%10;
                    t=t/10;
                }
                for(j=2;j<y;j++)
                {
                    if(y%j==0)
                    {
                        printf("%d 不是绝对素数3\n",a);
                        printf("%d %d\n",j,y);
                        break;
                    }
                    else if(j==y-1)
                        printf("%d是绝对素数\n",a);
                }
            }
        }
    return 0;

}

将else if里的i变量换一个,否则循环后,不会退出for(i=2;i<a;i++)循环。
1