质数的和用编程怎么求的

时间:2025-01-25 00:26:00 游戏攻略

求质数的和可以通过多种编程语言实现,以下是几种常见的方法:

方法一:暴力枚举法

通过遍历从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)}")

```

方法四:判断质数对的和

给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。