else without a previous if

这个else为啥找不到if啊,刚开始学c实在搞不懂了
//判断质数
#include<stdio.h>
int main()
{
int num,i,x;
printf("请输入一个数字:");
scanf("%d",&num);
for(i=2;i<num;i++)
{
if(num%i==0) x=1;
break;
else x=2;
}
if(x=1)
{
printf("%d不是质数",num);
}
if(x=2)
{
printf("%d是质数",num);
}
return 0;
}

for循环中不需要else,x可以标记是否是质数,标记x=1代表num不是质数,x!=1代表num是质数。
还可以优化循环次数,由于num对大于num一半的数求余肯定不会为0,所以优化for循环i的判断条件为 i <= num/2


//判断质数
#include<stdio.h>
int main()
{
int num,i,x = 0;
printf("请输入一个数字:");
scanf("%d",&num);
for(i = 2; i <= num/2; i++)
{
if(num%i==0) x=1;
break;
}
if(x==1) {
printf("%d不是质数",num);
} else {
printf("%d是质数",num);
}
return 0;
}