可以分析下结果为什么是7啊?最后难道不是if(b)一直满足,所以输出num_list[3]吗


#include <stdio.h>
int main()
{
    int num_list[]={6,7,8,9},k,j,b,u=0,m=4,w;
    w=m-1;
    while(u<=w)
    {
        j=num_list[u];
        k=2;b=1;
        while(k<=j/2&&b)
        {
            ++k;
            b=j%k;
        }
        if(b)
        {
            printf("%d\n",num_list[u]);u++;
        }
        else
        {
            num_list[u]=num_list[w];
            num_list[w]=j;
            w--;
        }
    }

    return 0;
}

只有 7 是质数,while(k<=j/2&&b) {} 循环判断是否质数,只有质数时 b=j%k==1.