c++ 只用iostream库!!!两个相差为4的素数称为素数组例如3和713和17等等。下面请你帮助小核桃找出所有两个数均不大于x的素数组。【输入】一个整数xx=100表示所有找到的素数组都要小于的范围。【输出】若干行每行为一对素数组。所有素数组按照第一个数字的大小从小到大输出。【输入样例1】19【输出样例1】3 77 1113 17【输入样例2】30【输出样例2】3 77 1113 1719
思路:
- 遍历从2到x的所有数字,判断每个数字是否为素数。
- 对于每个素数p,判断p+4是否也为素数,如果是,则输出p和p+4。
代码实现如下:
#include <iostream>
using namespace std;
// 判断一个数是否为素数
bool isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int x;
cin >> x;
for (int i = 2; i <= x; i++) {
if (isPrime(i) && isPrime(i + 4)) {
cout << i << " " << i + 4 << endl;
}
}
return 0;
}
复杂度分析:
- 时间复杂度:O(x * sqrt(x)),其中x为输入的整数。对于每个数字,需要判断其是否为素数,判断素数的时间复杂度为sqrt(x)。
- 空间复杂度:O(1)。只使用了常数个额外空间
原文地址: https://www.cveoy.top/t/topic/ixP6 著作权归作者所有。请勿转载和采集!