题解
【入门】歌德巴赫猜想
1 条题解
-
0
解题思路
枚举较小的素数,判断另一个数是否也是素数,找到符合条件的一组。
参考代码
// 这道题的做法:先读入题目给出的数据,再用简单的循环和判断完成要求。 #include <iostream> #include <cmath> using namespace std; // 判断一个数是否为素数 bool isPrime(int num) { if (num < 2) return false; for (int i = 2; i <= sqrt(num); i++) { if (num % i == 0) { return false; } } return true; } int main() { int n; cin >> n; // 遍历所有小于等于n的偶数 for (int even = 4; even <= n; even += 2) { // 查找两个素数,使它们的和等于当前偶数 for (int a = 2; a <= even / 2; a++) { int b = even - a; if (isPrime(a) && isPrime(b)) { cout << even << "=" << a << "+" << b << endl; } } } return 0; }复杂度
代码只使用了简单变量、循环和判断。若循环检查了 n 个数据,时间复杂度通常为 O(n);没有开辟与输入规模相关的额外数组时,空间复杂度为 O(1)。
- 1