求质数的和可以通过多种编程语言实现,以下是几种常见的方法:
方法一:暴力枚举法
通过遍历从2到n的所有整数,判断每个数是否为质数,并将质数累加求和。
```c
include include int isPrime(int n) { if (n <= 1) return 0; for (int i = 2; i <= sqrt(n); i++) { if (n % i == 0) return 0; } return 1; } int sumOfPrimes(int n) { int sum = 0; for (int i = 2; i <= n; i++) { if (isPrime(i)) { sum += i; } } return sum; } int main() { int n; printf("输入一个正整数: "); scanf("%d", &n); printf("1到%d之间的所有质数之和为: %d\n", n, sumOfPrimes(n)); return 0; } ``` 方法二:欧拉筛法 欧拉筛法是一种高效的筛法,用于找出一定范围内的所有质数,并计算它们的和。 ```c include include include const int maxn = 10000001; int u[maxn]; // 筛子 int p[maxn]; // 质数表 int cnt; // 质数总个数,兼作质数表下标 void sieve() { for (int i = 2; i < maxn; i++) { if (u[i]) continue; p[cnt++] = i; for (int j = 0; j < cnt && i * p[j] < maxn; j++) { u[i * p[j]] = 1; if (i % p[j] == 0) break; } } } void compute() { for (int i = 1; i <= cnt; i++) { f[i] = f[i - 1] + p[i - 1]; } } int main() { sieve(); compute(); int n; printf("输入一个正整数: "); scanf("%d", &n); printf("1到%d之间的所有质数之和为: %lld\n", n, f[n]); return 0; } ``` 方法三:Python实现 使用Python编写求质数和的程序,简洁明了。 ```python def is_prime(n): if n <= 1: return False for i in range(2, int(n0.5) + 1): if n % i == 0: return False return True def sum_of_primes(n): sum = 0 for i in range(2, n + 1): if is_prime(i): sum += i return sum n = int(input("输入一个正整数: ")) print(f"1到{n}之间的所有质数之和为: {sum_of_primes(n)}") ``` 方法四:判断质数对的和 给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。