设计一个程序,输出所有小于n的素数。并分析该算法的时间复杂度。用vc6++
时间: 2024-10-10 16:05:53 浏览: 35
设计一个简单的C++程序用于输出小于给定整数n的所有素数:
```cpp
#include <iostream>
using namespace std;
// 判断是否为素数的辅助函数
bool isPrime(int num) {
if (num <= 1)
return false;
for (int i = 2; i * i <= num; ++i)
if (num % i == 0)
return false;
return true;
}
// 输出小于n的所有素数
void printPrimes(int n) {
for (int i = 2; i < n; ++i) { // 开始从2开始,因为1不是素数
if (isPrime(i))
cout << i << " ";
}
cout << endl;
}
int main() {
int n;
cout << "请输入一个正整数: ";
cin >> n;
printPrimes(n);
return 0;
}
```
在这个程序中,`isPrime` 函数通过循环检查每个数是否能被除它自身以外的其他数字整除,如果能,则不是素数。`printPrimes` 函数则遍历所有小于n的数,并打印出素数。
时间复杂度分析:
- `isPrime` 函数的时间复杂度是 O(sqrt(n)),因为它只检查到数的平方根,因为大于这个数的因子必定有一个会小于等于它的平方根。
- 主函数`printPrimes` 的时间复杂度是 O(n),因为它需要对n-1个数进行检查。但是由于内嵌的`isPrime`调用了,实际总时间复杂度接近于外层循环次数乘以`isPrime`的复杂度,即 O(n*sqrt(n))。
阅读全文