关于判断数值是否为素数的程序编译问题

如标题所示,我在跟着小甲鱼学习c语言时,跟着尝试编译一个判断是否为素数的程序
但是运行之后我发现,程序并不能判断4为素数,于是我尝试在大前提下用if单独把4不是素数拿出来,源代码如下
#include
int main()
{
    int i,num;
    bool flag=1;
    printf("请输入一个整数:\n");
    scanf("%d",&num);
    for(i=2;i2;i=i+1)
    {
        if(num%i==0)
        {
            flag=0;
        }
    }
    
    if(flag!=0)
    {
        printf("这是一个素数\n");
    }
    else 
    {
        printf("这不是一个素数\n");
    }
    
    return 0;
    
}


输入4运行结果为这是素数,输入79结果为这是素数,所以我尝试自己修改了代码
#include
int main()
{
    int i,num;
    bool flag=1;
    printf("请输入一个整数:\n");
    scanf("%d",&num);
    if(num=4)
    {
        printf("这不是一个素数\n");
    }
    else
    {
    
    for(i=2;i2;i=i+1)
    {
        if(num%i==0)
        {
            flag=0;
        }
    }
    
    if(flag!=0)
    {
        printf("这是一个素数\n");
    }
    else 
    {
        printf("这不是一个素数\n");
    }
    }
    return 0;
    
}

但是输入79,运行结果成这不是素数了,我也不明白哪里出问题了,就请各位看看了

你这是 赋值语句,也就是 这里 num=4 表达式结果永远成立,你输入什么数都没有用

img

判断素数的循环条件错了,for(i=2;i<num/2;i=i+1) 修改为 for(i=2;i<=num/2;i=i+1) 即可,供参考:

#include<stdio.h>
int main()
{
    int i,num;
    bool flag=1;
    printf("请输入一个整数:\n");
    scanf("%d",&num);
    for(i=2;i<=num/2;i=i+1) //for(i=2;i<num/2;i=i+1) 修改
    {
        if(num%i==0)
        {
            flag=0;
        }
    }
    if(flag!=0)
    {
        printf("这是一个素数\n");
    }
    else
    {
        printf("这不是一个素数\n");
    }
    return 0;
}