酷代码 AI
菜单
服务商

C语言实现:求n以内最大k个素数及其和的巧妙解法

```c #include <stdio.h> #include <stdbool.h> // 判断一个数是否为素数 bool isPrime(int num) { if (num < 2) return false; for (int i = 2; i * i <= num; i++) { if (num % i == 0) return false; } return true; } int main() { int n, k; scanf("%d %d", &n, &k); int primes[10] = {0}; int primeCount = 0; int sum = 0; // 从n开始递减寻找素数 for (int i = n; i >= 2 && primeCount < k; i--) { if (isPrime(i)) { primes[primeCount] = i; sum += i; primeCount++; } } // 输出结果 for (int i = 0; i < primeCount; i++) { if (i > 0) printf("+"); printf("%d", primes[i]); } printf("=%d\n", sum); return 0; } ``` 代码解释: 1. `isPrime`函数:用于判断一个数是否为素数。对于小于2的数,直接返回`false`;对于大于等于2的数,检查从2到该数平方根之间是否有能整除它的数,如果有则不是素数,返回`false`,否则返回`true`。 2. `main`函数: - 读取输入的`n`和`k`。 - 定义一个数组`primes`用于存储找到的素数,`primeCount`用于记录找到的素数个数,`sum`用于记录素数的和。 - 从`n`开始递减遍历到2,对于每个数调用`isPrime`函数判断是否为素数,如果是则将其存入`primes`数组,更新`sum`和`primeCount`,直到找到`k`个素数或者遍历完所有数。 - 输出找到的素数和它们的和,素数之间用`+`连接。 ######[AI问答 | 512点数解答 | 2025-12-10 20:56:14]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]