请问我这段代码有什么问题,为什么是部分正确

#include
int main(){
int N;
scanf("%d",&N);
int i;
int isPrime = 1;
for(i=2;i
if( N % i == 0){
isPrime = 0;}
}
if(isPrime = 1)
{
printf("NO\n");
}
else{ printf("YES\n");}

return 0;

}
题目;输入一个大于1的正整数N,输出其是否为素数,如果是输出YES,否则输出NO。

有问题,判断 这里if(isPrime = 1) 是isPrime == 1,还有:

for(i=2;i<N;i++){
if( N % i == 0){
isPrime = 0;}
}

判断这里,假如N = 5,循环一直模,5%i 他没有==0的,所以你现在isPrime 一直是1 所以打印了一个NO 而5是质数,所以你这里判断错了
可以这么写:

#include <stdio.h>

int main(){
    int a=0;
    int num=0;
    scanf("%d",&num);
    if(num == 1){
        printf("NO\n");
    } else{
        for(int i=2;i<num;i++){
            if(num%i==0){
                a++;
            }
        }
        if(a==0)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

if和else反了,其次if里面的判断条件你用的是赋值号