任意输入20个正整数,找出其中的素数,并将这些素数按由小到大排序。要求:判断一个数是否为素数用函数实现;排序用选择法函数实现。主函数输入20正整数,调用素数函数,排序函数,输出排序后的素数。
时间: 2023-06-05 20:47:42 浏览: 261
题目要求:任意输入20个正整数,找出其中的素数,并将这些素数按由小到大排序。要求:判断一个数是否为素数用函数实现;排序用选择法函数实现。主函数输入20个正整数,调用素数函数,调用排序函数,输出排序后的素数。
1. 首先定义一个判断素数的函数,判断一个数n是否为素数,只需要从2到n-1遍历之间的每一个数,判断是否能够被整除,如果能,就不是素数。如果遍历完之后都不能被整除,那么就是素数。
2. 接着定义一个使用选择排序法的函数,从小到大将素数排序,并返回排序后的列表。
3. 在主函数中,输入20个正整数,调用素数函数,将素数列表传给排序函数,然后输出排序后的素数。
具体实现方法请见代码:
相关问题
任意输入20个正整数,找出其中的素数,并将这些素数按由小到大排序。要求:判断一个数是否为素数用函数实现;排序用函数实现
Sure, 我会按照您的要求回答问题。以下是您的答案:
问题1: 任意输入20个正整数,找出其中的素数,并将这些素数按由小到大排序。要求:判断一个数是否为素数用函数实现;排序用函数实现。
答案1: 首先,我们可以写一个函数来判断一个数是否为素数:
```
bool is_prime(int n) {
if (n < 2) {
return false;
}
for (int i = 2; i * i <= n; ++i) {
if (n % i == 0) {
return false;
}
}
return true;
}
```
这个函数会返回 true 或 false,表示输入的数是否为素数。
现在,我们可以写主函数来实现我们的要求:
```
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool is_prime(int n) {
if (n < 2) {
return false;
}
for (int i = 2; i * i <= n; ++i) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
vector<int> primes;
int num;
cout << "请输入20个正整数: " << endl;
for (int i = 0; i < 20; ++i) {
cin >> num;
if (is_prime(num)) {
primes.push_back(num);
}
}
sort(primes.begin(), primes.end());
cout << "这些素数按由小到大的顺序排序为: " << endl;
for (int p : primes) {
cout << p << " ";
}
cout << endl;
return 0;
}
```
这个程序会首先读入 20 个正整数,然后判断它们是否为素数,把素数存储在一个 vector 中,最后用 sort 函数对它们进行排序并输出。
c语言写一个程序 任意输入20个正整数找出其中的素数并按小到大输出,用两个函数实现功能在主函数输出结果
以下是一个使用两个函数实现找出20个正整数中的素数并按小到大输出的 C 语言程序:
```c
#include <stdio.h>
// 判断是否为素数
int isPrime(int num) {
int i;
for (i = 2; i < num; i++) {
if (num % i == 0) {
return 0; // 不是素数,返回 0
}
}
return 1; // 是素数,返回 1
}
// 找出素数并按小到大排序
void findAndSortPrimes(int nums[], int length) {
int i, j, temp;
for (i = 0; i < length - 1; i++) {
for (j = i + 1; j < length; j++) {
if (nums[i] > nums[j]) {
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
printf("素数:");
for (i = 0; i < length; i++) {
if (isPrime(nums[i])) {
printf("%d ", nums[i]);
}
}
}
int main() {
int nums[20], i;
printf("请输入20个正整数:");
for (i = 0; i < 20; i++) {
scanf("%d", &nums[i]);
}
findAndSortPrimes(nums, 20);
return 0;
}
```
程序流程:
1. 定义两个函数:`isPrime` 用于判断一个数是否为素数;`findAndSortPrimes` 用于找出素数并按小到大排序。
2. 在 `main` 函数中声明一个长度为 20 的数组 `nums`,并通过 `for` 循环输入 20 个正整数。
3. 调用 `findAndSortPrimes` 函数,将数组 `nums` 和数组长度 20 作为参数传入。
4. `findAndSortPrimes` 函数首先使用双层循环将数组 `nums` 按小到大排序,然后遍历数组,对每个数调用 `isPrime` 函数判断是否为素数,如果是素数则输出。
5. 程序执行完毕退出。
阅读全文