c语言。输出1~100间的素数,并对他们求和。

c语言。输出1~100间的素数,并对他们求和。

以下代码有误,该如何改正?请详细解答。谢谢。

#include <stdio.h>
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;       //1不是素数,flag = 0。
    else if(2 == n)
        flag = 1;       //2是素数,flag = 1。                     //考虑1、2这两个素数
    else
    {
        flag = 1;
        for(i = 2;i < n;i++)                  
        {   
            if(n%i==0)
                flag = 0;
            break;
        }
    }
    return flag;
}


  • 素数判断,那边遇到能整除的,设置flag = 0,并退出循环

#include <stdio.h>
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;       //1不是素数,flag = 0。
    else if(2 == n)
        flag = 1;       //2是素数,flag = 1。                     //考虑1、2这两个素数
    else
    {
        flag = 1;
        for(i = 2;i < n;i++)                  
        {   
            if(n%i==0)   // 遇到 能整除的,则退出循环
            {
                flag = 0;
                break;
            }
            
        }
    }
    return flag;
}