统计素数并求和

错误代码

#include <stdio.h>
#include <math.h>
int main()
{
    int m,n;
    scanf("%d %d",&m,&n);
    int div,flag;
    int i,sum = 0,count=0;;
    for(i=m;i<=n;i++)
    {
        flag=1;
        for(div=2;div<=sqrt(i);div++)
        {
            if(((i%div)==0)||(i==1))
            {
                flag=0;
                break;
            }
        }
        if(flag==1){sum+=i;count++;}
    }
    printf("%d %d",count,sum);
    return 0;
}

正确代码

#include <stdio.h>
#include <math.h>

// 判断一个数是否为素数的函数
int is_prime(int num) {
    if (num <= 1) {
        return 0; // 小于等于1的数不是素数
    }
    if (num == 2) {
        return 1; // 2是素数
    }
    if (num % 2 == 0) {
        return 0; // 除2外的偶数不是素数
    }
    // 只需检查到 sqrt(num)
    int limit = (int)sqrt(num);
    for (int i = 3; i <= limit; i += 2) {
        if (num % i == 0) {
            return 0; // 找到因数,不是素数
        }
    }
    return 1; // 是素数
}

int main() {
    int M, N;
    scanf("%d %d", &M, &N);

    // 检查输入范围
    if (M < 1 || N > 500 || M > N) {
        // printf("Input out of range.\n");
        return 1;
    }

    int count = 0;
    int sum = 0;

    // 遍历区间 [M, N] 内的每个数
    for (int i = M; i <= N; i++) {
        if (is_prime(i)) {
            count++;
            sum += i;
        }
    }

    // 输出结果
    printf("%d %d\n", count, sum);

    return 0;
}




全部评论

相关推荐

26应届求职ing:你这是报了豆音四哥的班?双非本硕拿这两个项目写简历里投100多家嵌软也没什么面试,感觉项目简单了,很多人用
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务