合数判断改错优化程序

下面的实验2-1程序是合数判断器(合数指自然数中除了能被1和本身整除外,还能被其它数整除的数),在该源程序中存在若干语法和逻辑错误。要求对该程序进行调试修改,使之能够正确完成指定任务。

#include <stdio.h>
int main( )
{ 
int i, x, k, flag = 0;
printf("本程序判断合数,请输入大于1的整数,以Ctrl+Z结束\n");
while (scanf("%d", &x) !=EOF) {
for(i=2,k=x>>1;i<=k;i++)
        if (!x%i) {
            flag = 1;
            break;
    }
if(flag=1) printf("%d是合数", x);
else printf("%d不是合数", x);
}
return 0;
}