用C++编写两个函数,将n个正整数中的素数按升序排序。函数功能分别是:判断一个数是否是素数,以及对数组进行排序。要求输入输出均在主函数中完成。 【输入形式】 输入分2行:第一行为n的值,第二行为n个整数; 【输出形式】 素数升序排列;
时间: 2024-05-13 13:18:22 浏览: 81
以下是代码实现:
```c++
#include <iostream>
using namespace std;
// 判断一个数是否为素数
bool isPrime(int num) {
if(num <= 1) return false;
for(int i = 2; i <= num / 2; i++) {
if(num % i == 0) return false;
}
return true;
}
// 对数组进行排序
void sortArray(int arr[], int n) {
for(int i = 0; i < n - 1; i++) {
for(int j = i + 1; j < n; j++) {
if(arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int main() {
int n;
cin >> n;
int arr[n];
for(int i = 0; i < n; i++) {
cin >> arr[i];
}
// 将素数筛选出来并存入新数组
int primeArr[n];
int count = 0;
for(int i = 0; i < n; i++) {
if(isPrime(arr[i])) {
primeArr[count++] = arr[i];
}
}
// 对素数数组进行排序
sortArray(primeArr, count);
// 输出素数数组
for(int i = 0; i < count; i++) {
cout << primeArr[i] << " ";
}
cout << endl;
return 0;
}
```
其中,判断一个数是否为素数的函数 `isPrime` 使用了试除法的思想,对于每个待判断的数,从 2 到其一半的数依次进行除法运算,如果存在一个数能够整除它,则它不是素数。
数组排序函数 `sortArray` 使用了简单选择排序的思想,依次找到未排序部分中的最小值,与当前位置进行交换,直到整个数组有序。
在主函数中,首先输入 n 和 n 个整数,然后将素数筛选出来并存入新数组,对素数数组进行排序,最后输出素数数组。
阅读全文