C语言求解前N个质数之和:附源码及详解
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;
}
代码解释:
-
isPrime(int num)函数:- 接受一个整数
num作为参数。 - 如果
num小于等于 1,则返回 0,因为 1 和非正整数不是质数。 - 从 2 循环到
num的平方根,判断num是否能被 i 整除。如果能被整除,则返回 0,表示num不是质数。 - 如果循环结束后都没有找到能整除
num的数,则返回 1,表示num是质数。
- 接受一个整数
-
main()函数:- 声明变量
N用于存储用户输入的整数,count用于记录已找到的质数个数,number从 2 开始递增表示当前判断的数字,sum用于累加质数的和。 - 提示用户输入一个整数 N。
- 使用
while循环,当找到的质数个数count小于N时,执行循环体内的代码。 - 在循环体内,调用
isPrime()函数判断当前数字number是否为质数。 - 如果是质数,则将
number加到sum中,并将count加 1。 - 每次循环结束后,将
number加 1,继续判断下一个数。 - 当找到
N个质数后,退出循环,并打印前N个质数的和。
- 声明变量
总结:
这个程序结合了循环和函数的知识,有效地解决了计算前N个质数之和的问题。通过学习这段代码,你可以更加熟悉C语言的基本语法,并掌握如何编写简单的算法来解决实际问题。
原文地址: https://www.cveoy.top/t/topic/Rxt 著作权归作者所有。请勿转载和采集!