c语言,输出结果不符合。输出1~100间的素数,并对他们求和。 这里调用了函数。不知道为什么run的结果仅出现了2、3两个素数,求更正

c语言,输出结果不符合。输出1~100间的素数,并对他们求和。
这里调用了函数。不知道为什么run的结果仅出现了2、3两个素数,求更正

img


#include 
int IsPrime(int n);
int main()
{
    int i,sum = 0;
    for(i = 1;i <= 100;i++)
    {
        if(IsPrime(i))
        {
            printf("%d\n",i);
            sum += i;
        }
    }
    printf("sum of prime numbers:%d\n",sum);
    return 0;
}
int IsPrime(int n)
{
    int i,flag;
    if(1 == n)
        flag = 0;
    else if(2 == n)
        flag = 1;                               
    else
    {
        flag = 1;
        for(i = 2;i <= n / 2; i++)              
        {
            flag = 0;
            break;
        }
    }
    return flag;
}

晕,你都没判定素数的语句啊,for循环中改为

if(n%i==0)
{
    flag = 0;
    break;
}