C语言求解前N个质数之和

本文将介绍如何使用C语言编写程序,计算前N个质数的和,并提供详细的代码解释。

问题描述:

用户输入一个正整数N,程序计算出前N个质数的和。

例如:

  • 当N = 3时,结果为2 + 3 + 5 = 10
  • 当N = 7时,结果为2 + 3 + 5 + 7 + 11 + 13 + 17 = 58

C语言代码:

#include <stdio.h>

// 判断一个数是否为质数
int isPrime(int num) {
    if (num <= 1) {
        return 0; // 1和非正整数不是质数
    }
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            return 0; // 能被整除,不是质数
        }
    }
    return 1; // 经过所有测试,是质数
}

int main() {
    int N, count = 0, number = 2, sum = 0;
    printf('请输入一个整数 N:
');
    scanf('%d', &N);

    // 循环查找质数,直到找到N个
    while (count < N) {
        if (isPrime(number)) {
            sum += number; // 累加质数
            count++; // 计数器加一
        }
        number++; // 检查下一个数
    }

    printf('前 %d 个质数的和为:%d
', N, sum);

    return 0;
}

代码解释:

  1. isPrime(int num) 函数:

    • 接受一个整数 num 作为参数。
    • 如果 num 小于等于 1,则返回 0,因为 1 和非正整数不是质数。
    • 从 2 循环到 num 的平方根,判断 num 是否能被 i 整除。如果能被整除,则返回 0,表示 num 不是质数。
    • 如果循环结束后都没有找到能整除 num 的数,则返回 1,表示 num 是质数。
  2. main() 函数:

    • 声明变量 N 用于存储用户输入的整数,count 用于记录已找到的质数个数,number 从 2 开始递增表示当前判断的数字,sum 用于累加质数的和。
    • 提示用户输入一个整数 N。
    • 使用 while 循环,当找到的质数个数 count 小于 N 时,执行循环体内的代码。
    • 在循环体内,调用 isPrime() 函数判断当前数字 number 是否为质数。
    • 如果是质数,则将 number 加到 sum 中,并将 count 加 1。
    • 每次循环结束后,将 number 加 1,继续判断下一个数。
    • 当找到 N 个质数后,退出循环,并打印前 N 个质数的和。

总结:

这个程序结合了循环和函数的知识,有效地解决了计算前N个质数之和的问题。通过学习这段代码,你可以更加熟悉C语言的基本语法,并掌握如何编写简单的算法来解决实际问题。

C语言求解前N个质数之和:附源码及详解

原文地址: https://www.cveoy.top/t/topic/Rxt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录